【问题标题】:Is PHP for Windows the same as Linux, Mac, etc.?PHP for Windows 是否与 Linux、Mac 等相同?
【发布时间】:2009-07-21 01:04:11
【问题描述】:

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

【问题讨论】:

    标签: php


    【解决方案1】:

    大多数情况下,但您需要注意一些事项:

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

    关于阿帕奇:

    您可能会在某个时候遇到一些障碍,其中一台服务器使用 PHP 作为模块,而另一台服务器通过 fcgi 使用它。以相同方式配置的两个 Apache 将表现相同。

    【讨论】:

    • 还有一些函数在win32下可用,但在*nix下不可用,例如com/.net 模块。
    • 另外,一些 $_SERVER 变量的存在可能会有所不同,具体取决于 PHP 是否在 Apache 上运行,Apache 往往是 nix 用作 HTTP 服务器的,而 Internet 信息服务 (IIS) 是 Windows 所具有的作为 HTTP 服务器。
    【解决方案2】:

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

    差不多,但不完全。您需要注意几件事。

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

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

    3) 安装。与 Windows 相比,您为 Linux/Unix 获得的 PHP 包在默认安装中包含的内容非常广泛。您需要确保在相反平台的开发盒上测试您的应用程序,以确保您已编译/添加了所有必需的库,否则您会从看起来正常的应用程序中得到一些不错的致命错误。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        正确答案是:“视情况而定”。

        在大多数情况下,PHP 在任何操作系统上的功能都相同。但是有很多警告,通常有一些功能在 Windows 上根本不起作用。 (例如 getrusage())。由于 pecl4win(一个包含所有 PECL 库的 windows 编译的站点)的死亡,有时为 PHP 查找 windows 库也相当困难。这使得添加诸如 APC(替代 PHP 缓存)之类的东西非常麻烦。

        也就是说,PHP 手册已经详细说明了哪些内容在 Windows 上不起作用。

        【讨论】:

        • 我没有使用很多 PECL 库,但我在找到 Windows 所需的库时没有遇到任何问题。虽然,就像我说的,我在 PECL 方面的经验是有限的。
        • 是的,它的命中或错过。自从pecl4win.php.net 下线。一直咩。我的同事使用 Win,他不得不在谷歌上四处寻找许多库的 dll,并希望它们是为他的 PHP 版本编译的。
        • 看起来 pecl4win 并没有倒闭。但我不知道他们“准备一个新的构建系统”有多久了。
        • 自 2008 年 11 月以来。他们评论说不会恢复。
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            正如其他用户指出的那样,存在一些差异(我不会重复这些,已经有很好的答案;最烦人的一点是 windows 下的文件名不区分大小写,恕我直言),因此,如果您使用 Linux 服务器在生产环境中部署站点,偶尔在 Linux 上对其进行测试可能会很有用。

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

            它还将帮助您了解一些有关 Linux 的基础知识——如果您打算专业地进行 PHP 开发,这并不是一件坏事,因为在 PHP 网络服务器方面,Linux 比 Windows 更常用。

            【讨论】:

              猜你喜欢
              • 2012-06-27
              • 2015-11-10
              • 2021-09-13
              • 2017-06-23
              • 1970-01-01
              • 2021-06-08
              • 2021-06-14
              • 2020-12-16
              • 1970-01-01
              相关资源
              最近更新 更多