Назад | Перейти на главную страницу

Каких несоответствий следует ожидать между стеками WAMP и LAMP?

Я привык к стеку LAMP (Linux, Apache, MySQL, PHP), но иногда мне приходится использовать стек WAMP (Windows ...) для удовлетворения определенных требований клиента.

Я не столкнулся с какими-либо существенными различиями, но я вижу это требование все больше и больше в приложениях, которые становятся все более требовательными и сложными.

Пожалуйста, не комментируйте выбор стека или ОС, мне просто нужен список ошибок, переходящих от одного к другому и наоборот.

-Адам

На ум приходит следующее:

  • Чувствительность к регистру. Windows нечувствительна к регистру, а Linux - к регистру.
  • Разделитель пути. Windows использует ";", Linux использует ":"
  • Разделитель каталогов. Windows использует "\", Linux использует "/"

Что касается разделителя каталогов, в 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"].'/';
}