Windows的PHP与Linux、Mac等相同吗。?

Windows的PHP与Linux、Mac等相同吗。?,php,Php,如果我在Windows和Apache上编写PHP(php5,如果有关系的话)与在另一个操作系统和Apache上编写PHP是一样的吗?我不是指文件路径之类的东西。谢谢。考虑到PHP只是一种语言,这不重要。无论你走到哪里都应该是一样的。是的。。。设置它可能有点不同,但它的用法与脚本语言相同。只要您不使用系统命令或无效的文件路径,大多数事情都应该顺利完成。我已经使用PHP有一段时间了,在Windows机器上开发,然后将其转移到Linux机器上,我想不出有什么问题。正确的答案是:“这取决于” 在大多数情

如果我在Windows和Apache上编写PHP(php5,如果有关系的话)与在另一个操作系统和Apache上编写PHP是一样的吗?我不是指文件路径之类的东西。谢谢。

考虑到PHP只是一种语言,这不重要。无论你走到哪里都应该是一样的。

是的。。。设置它可能有点不同,但它的用法与脚本语言相同。

只要您不使用系统命令或无效的文件路径,大多数事情都应该顺利完成。我已经使用PHP有一段时间了,在Windows机器上开发,然后将其转移到Linux机器上,我想不出有什么问题。

正确的答案是:“这取决于”

在大多数情况下,PHP在任何操作系统上的功能都是相同的。不过,有相当多的注意事项,通常有一些函数无法在windows上运行。(例如getrusage())。由于pecl4win(一个包含所有PECL库的windows编译的网站)的消亡,为PHP查找windows库有时也相当困难。这使得添加APC(可选PHP缓存)之类的东西变得相当麻烦


也就是说,PHP手册对windows上不起作用的内容进行了详细的说明。

大多数情况下,但您需要注意以下几点:

  • 在*nix系统下,路径名区分大小写,而在Windows下不区分大小写
  • 在*nix系统下,路径分隔符为
    /
    。在Windows下是
    \
    ,但PHP会自动翻译
    /
    。使用
    目录\u分隔符
    常量或始终使用
    /
  • 在*nix系统下,路径遍历模式不同。没有驱动器号这样的东西。而是有挂载点
  • 默认情况下,在*nix系统下,文件权限比在Windows上更严格
  • 某些功能在Windows下不可用,或表现不同。这些主要用于低级功能(内存状态、系统状态)。请参阅PHP文档
  • 如果您使用的是
    exec()
    或任何其他类似函数,则命令将不同。请参阅您的系统文档
关于Apache:


您可能会遇到一些问题,一台服务器使用PHP作为模块,另一台服务器通过
fcgi
使用它。两个配置相同的Apache将以相同的方式运行。

我将把它标记为社区wiki,因为我只是从另一个站点复制和粘贴我的答案:

差不多,但不完全一样。有几件事你必须小心

1)文件名:Windows是不区分大小写的操作系统。如果创建文件Foo.php,可以使用
include('Foo.php')
include('Foo.php')
将其包含在内。当您将项目移动到Linux/Unix时,如果您没有合适的案例,则会中断

2)在依赖集成操作系统功能的情况下,通常存在一些特定于语言的平台差异。这些很少出现,但您可能偶尔会遇到它们。例如,该函数直到5.3.0版才在Windows PHP中存在


3)安装。与Windows相比,Linux/Unix的PHP软件包可以在默认安装中广泛使用。你需要确保在另一个平台的开发盒上测试你的应用程序,以确保你已经编译/添加了所有必需的库,否则你会从一个外观正常的应用程序中得到一些致命的错误。

正如其他用户所指出的,有一些不同之处(我不会重复这些,已经有很好的答案了;最恼人的一点是windows下的文件名不区分大小写,IMHO),因此如果您使用Linux服务器在生产环境中部署站点,偶尔在Linux上测试一下可能会很有用

如果您不想在您的计算机上安装Linux,并且拥有足够强大的计算机(我认为至少有2个内核和2 GB RAM),那么您可以使用虚拟机,并使用其中一个软件(两者都是免费的):


它还将帮助您学习一些关于Linux的基础知识——如果您打算专业地进行PHP开发,这不是一件坏事,因为在PHP Web服务器方面,Linux的使用远远超过Windows。

我没有使用过很多PECL库,但我在找到Windows所需的库时没有遇到任何问题说,我对PECL的经验有限。是的,它是成功还是失败。从那以后就失败了。一直是meh。我的同事使用Win,他不得不在谷歌上四处搜寻许多库的DLL,希望它们是为他的PHP版本编译的。虽然看起来pecl4win并没有失败。但我不知道它们已经存在多久了“准备新的生成系统"。自2008年11月以来。他们评论说,它将不会被还原。此外,还有一些功能在win32下可用,但在*nix下不可用,例如com/.net模块。此外,一些$u服务器变量的存在可能会有所不同,这取决于PHP是否在Apache上运行,而Apache往往是nix用作HTTP服务器和Internet信息服务的(IIS)这是Windows作为HTTP服务器的常用功能。