我习惯了 LAMP(Linux、Apache、MySQL、PHP)堆栈,但有时我必须使用 WAMP(Windows ...)堆栈来满足某些客户端要求。
我没有遇到任何重大差异,但我越来越多地看到这种要求,应用程序变得越来越苛刻和复杂。
- 两者之间我应该注意什么,或者我可以完全期望它们表现相同吗?
请不要评论堆栈或操作系统的选择,我只需要一个从一个到另一个移动的陷阱列表,反之亦然。
-亚当
我习惯了 LAMP(Linux、Apache、MySQL、PHP)堆栈,但有时我必须使用 WAMP(Windows ...)堆栈来满足某些客户端要求。
我没有遇到任何重大差异,但我越来越多地看到这种要求,应用程序变得越来越苛刻和复杂。
请不要评论堆栈或操作系统的选择,我只需要一个从一个到另一个移动的陷阱列表,反之亦然。
-亚当
想到以下几点:
就目录分隔符而言,PHP 具有DIRECTORY_SEPARATOR常量,我发现始终使用 Linux 变体“/”更方便,因为它在 Linux 和 Windows 中都可以使用。
MySQL 的默认设置在两个平台之间是不同的,尤其是在表名区分大小写方面。确保您完美地使用所有小写的表名,或者始终在查询中正确使用大小写。
PHP 的 mail() 函数在 Windows 下与 Linux 有很大不同。如果您大量使用其功能,则应仔细阅读手册。由于系统行为(如 rename()),许多文件系统函数也有所不同。一般来说,与操作系统本身交互的任何功能,您可能都需要查看手册页以获取有关 Windows 下行为的评论。
php.ini 中有一些配置差异。就像您的扩展将是 dll 一样,您需要设置默认的 smtp 服务器,而不是依赖 sendmail。不过,在阅读 ini 文件时这很明显。我已经看到 WIMP 组合在生产中运行得很好(所以 WAMP 会更流畅)。所以我想说它主要是设置和配置,也许还有一些扩展的存在。
已经提到了目录分隔符,但是需要注意一个额外的问题:
在 LAMP 机器上,文件系统和 Web 路径的分隔符是相同的。在 LAMP 机器上,它们是不同的。虽然这似乎并没有使情况变得更糟,但我已经处理了多个区分文件和 Web 路径的 Web 包,但对两者使用相同的分隔符常量(osCommerce,我正在查看你。)
在我认为我已经解决了所有路径疯狂之后的几天,我进行了很多有趣的调试。
在上面提到的其他项目之上,我注意到 $_SERVER["DOCUMENT_ROOT"] 在 Windows 上带有斜杠,而不是在 linux 上。
不是一个大问题,嵌套包含/重写甚至只是链接 css/js,您需要相应地检查尾部斜杠行为。
只是因为它很方便 :) - 我有一个预先编写的函数。