Я привык к стеку 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 разделитель одинаков как для файловой системы, так и для веб-путей. На машине LAMP они разные. Хотя это не похоже, что это сильно ухудшает ситуацию, я имел дело с более чем несколькими веб-пакетами, которые различают путь к файлу и веб-путь, но используют одну и ту же константу разделителя для обоих (osCommerce, я смотрю на ТЫ.)
Я получил массу удовольствия от отладки в те дни, после того как я подумал, что все безумие пути разрешено.
Помимо других пунктов, упомянутых выше, я заметил, что $ _SERVER ["DOCUMENT_ROOT"] имеет косую черту в окнах, а не в Linux.
Это не большая проблема, с вложенными включениями / переписыванием или даже просто связыванием css / js вам нужно будет соответственно проверить действие завершающей косой черты.
просто потому, что было удобно :) - у меня есть заранее написанная функция.
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"].'/';
}