WAMP和LAMP栈之间应该有什么不一致?

我习惯于LAMP(Linux,Apache,MySQL,PHP)堆栈,但偶尔我必须使用WAMP(Windows …)堆栈来满足特定的客户端要求。

我没有遇到任何显着的差异,但是我越来越多地看到了这个要求,而这些要求越来越苛刻和复杂。

  • 我应该注意两者之间的关系,还是我完全可以期望他们performance得一样呢?

请不要评论堆栈或操作系统的select,我只需要从一个到另一个的陷阱列表,反之亦然。

-亚当

以下介绍:

  • 区分大小写。 Windows不区分大小写,而Linux区分大小写。
  • path分隔符。 Windows使用“;”,Linux使用“:”
  • 目录分隔符。 Windows使用“\”,Linux使用“/”

就目录分隔符而言,PHP具有DIRECTORY_SEPARATOR常量,我发现总是使用Linux变体“/”更方便,因为它在Linux和Windows中都可以工作。

MySQL在两个平台之间的默认设置是不同的,特别是在表名大小写敏感的情况下。 确保您完全使用所有小写表名称,或者始终在查询中正确使用。

在Linux下,PHP的mail()函数有点不同。 如果你大量使用它的function,你应该仔细阅读手册。 由于系统行为(如rename()),许多文件系统function也不同。 一般来说,与操作系统本身交互的任何函数都可能需要查看手册页,以获取有关Windows下行为的注释。

在php.ini中有一些configuration差异。 像你的扩展将是DLL,你需要设置一个默认的SMTP服务器,而不是依靠sendmail。 虽然通过ini文件阅读是明显的。 我已经看到WIMP组合在生产中运行得很好(所以WAMP会更顺畅)。 所以我会说这主要是设置和configuration,也许是一些扩展的存在。

目录分隔符的东西已经被提及,但是需要注意一些额外的问题:

在LAMP机器上,文件系统和networkingpath的分隔符相同。 在LAMP机器上,它们是不同的。 虽然这似乎并没有使情况变得更糟糕,但我已经处理了多个区分文件和networkingpath的web包,但是对于这两者使用相同的分隔符常量(osCommerce,我在看您。)

在我认为我解决了所有的path错误之后,那天我进行了很多有趣的debugging。

在上面提到的其他项目之上,我已经注意到$ _SERVER [“DOCUMENT_ROOT”]在Windows上以斜线开头,而不是在Linux上。

不是一个大问题,嵌套包括/重写,甚至只是链接的CSS / JS,你需要检查相应的尾部斜杠行为。

只是因为它很方便:) – 我有一个预先写好的function。

function docroot() { $needle = '/'; $haystack = $_SERVER["DOCUMENT_ROOT"]; $length = strlen($needle); $end = $length * -1; //negative if (substr($haystack, $end) === $needle) return $_SERVER["DOCUMENT_ROOT"]; else return $_SERVER["DOCUMENT_ROOT"].'/'; }