在Windows上编写PHP并稍后在运行Linux的服务器上托管PHP可以吗?这样的项目的迁移会不会有任何问题?
我认为确实不会有任何问题,尤其是因为我是PHP的初学者,因此我不会使用任何特定于OS的高级功能。但是,我要确定一点,因为我真的根本不喜欢Linux。
在Windows上编写PHP并稍后在运行Linux的服务器上托管PHP可以吗?这样的项目的迁移会不会有任何问题?
我认为确实不会有任何问题,尤其是因为我是PHP的初学者,因此我不会使用任何特定于OS的高级功能。但是,我要确定一点,因为我真的根本不喜欢Linux。
Answers:
一些指针:
文件系统区分大小写
如果您的文件名为HelloWorld.php,则:
include "helloworld.php";
在Windows上是合法的,并且可以使用。但是Linux的文件名是区分大小写的,你可以有文件称为HelloWorld.php
,helloworld.php
,hEllOwOrlD.php
在同一个目录。因此,您应该像在区分大小写的文件系统上一样在Windows上进行开发:完全使用正确的文件名,目录名,扩展名- .php
也不同于.PHP
。
目录和路径分隔符
在Windows中,我们说:
include 'classes\myClass.php';
但是在Linux中,我们会说:
include 'classes/myClass.php';
PHP足够聪明,可以忽略,两个分隔符都可以在两个系统中工作。但是您应该保持一致,并在所有地方都使用斜杠(/),因为它也是大多数系统上的标准。如果想走那么远,有一个漂亮的预定义常量 DIRECTORY_SEPARATOR
可以转换为正确的常量:
include "classes" . DIRECTORY_SEPARATOR . "myClass.php";
路径分隔符也一样,在Windows中为分号,否则为冒号。为了安全起见,您应该执行以下操作:
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
需要路径分隔符时。尽管大多数人认为由于PHP不介意使用哪个分隔符是可以的,但是有一个重要的要点:当您向系统询问目录或路径时,分隔符将是系统特定的分隔符。所以我们说要爆炸 include路径到它的部分:
$includePath = get_include_path();
$pathParts = explode(";", $includePath) // Will only work on Windows
$pathParts = explode(":", $includePath) // Will work on other systems but not Windows
$pathParts = explode(PATH_SEPARATOR, $includePath) // Will work everywhere!!!
文件编码和定界符
您应该将IDE设置为将所有脚本的文件编码设置为UTF-8而不是Cp *,并将文件行定界符设置为Unix("\n"
而不是"\r\n"
)。在大多数情况下,这并不重要,但是您应该保持一致,最好的方法是Unix方法(在Windows上可以正常工作,反之亦然)。
使用Linux测试平台进行设置。它可以是在Windows下运行的虚拟Linux计算机,也可以是双启动计算机,也可以是朋友的系统。然后,每隔一段时间(例如星期一早上)将您的代码移植到Linux系统上并进行测试。
其他答案解决了您将面临的主要问题,但是有许多较小的陷阱,例如:
是的,有多种方法可以仔细解决所有这些差异,但是您是否谨慎使用了替代方法?当然不是-您已编码并且可以运行,因此必须可以。
在类似操作系统上进行测试之前,请勿将任何东西放在主机上。
我没有从Windows移植到Linux的经验,但是我有从Linux移植到Windows的经验,还有从Linux移植到OS X的更多经验。可以做到,但是关键是测试,测试和测试。
即使我对Linux命令行和vim之类的Linux编辑工具相当满意,但我大部分的PHP开发都是在Windows计算机上进行的。
我在互联网上有一台虚拟服务器(每月大约要花20美元),用作开发服务器,并使用FileZilla连接到该服务器。FileZilla将我正在编辑的文件下载到一个临时目录中,并跟踪保存,当我保存时将其扔回到开发服务器上,然后从那里进行测试。
这有点麻烦,但是允许我几乎在任何地方进行开发;使用FileZilla和拇指驱动器上的简单编辑器,我什至可以从另一台计算机连接并进行更改。所有测试始终在Linux服务器上进行,因此我可以发现可能引起的任何问题-将代码投放到服务器上时,令人不快的惊喜更少。
您可以使用廉价的托管帐户执行相同的操作(尽管根据所开发的应用程序的类型,由于廉价的托管帐户通常功能不足,您可能会遇到性能问题),而其他许多FTP应用程序也具有编辑和上传功能。
正如大多数人所说的那样,实际上应该没有问题。就是说,VirtualBox使安装Linux虚拟机变得非常非常容易,您可以在该虚拟机上测试您的代码库,以确保它在生产环境中可以正常工作,而无需使用生产环境。