80% ваших проблем будут разрешения. Windows делает их по-другому; если вы войдете в систему как root (или с правами root), вы можете обойти разрешения. Апач не может и не будет.
- Узнайте, как правильно установить владельца файлов и каталогов. Любая книга по Unix будет охватывать это: убедитесь, что вы действительно понимаете это - это не безопасность Windows по-разному написано - это другая модель безопасности.
Из оставшихся проблем 80% будут являться проблемами PATH. У PHP нет такой большой проблемы с PATH, как у Java и Python, но все они используют настройку PATH для поиска компонентов и библиотек. Вы регулярно ошибаетесь. У Windows есть PATH, но есть и реестр, что делает ее либо супер-простой, либо супер-секретный. Unix не хранит секретов.
- Узнайте, какие переменные окружения используют PHP и MySQL. Убедитесь, что вы знаете, где и как они установлены. Apache работает в своей собственной специфической среде и имеет команды для предоставления настроек среды выполнения через
mod_php
. Напишите короткие echo $PATH
сценарии оболочки, чтобы показать, что происходит.
Из оставшихся проблем 80% будут связаны с базой данных. После сортировки разрешений базы данных вам все равно придется подключиться, и «именованный канал» против «локального хоста» будет неправильным в неясных, запутанных путях. MySQL очень простителен, но здесь вы допустите некоторые ошибки.
- Попробуйте каждое альтернативное соединение, узнайте, как они работают. Не выбирайте один, потому что он похож на Windows или «проще». На самом деле упражнение каждого. Также важно, как вы передаете имена пользователей и пароли из веб-приложения на сервер базы данных. Apache работает как «никто» - и вы не хотите предоставлять им доступ по умолчанию ни к чему. Ваше приложение должно преднамеренно подключаться к базе данных без использования значений по умолчанию.
Из оставшихся проблем 80% будут конфигами Apache. Apache действительно прост, но имеет миллион вариантов. Есть четыре способа сделать все, и вы всегда попробуете два, которые вообще не работают, и согласитесь на третий, который будет неприличным. Четвертый, который намного проще, никогда не придет вам в голову.
- Прочтите много о конфигурации Apache. Сайт httpd.apache.org содержит много информации. Стремитесь к простоте. Скопируйте существующие примеры и используйте их. Не устанавливайте требования или желаемые реализации на основе опыта IIS или опыта рабочего стола Windows. Скопируйте то, что работает.
Из оставшихся проблем 80% будет связано с использованием файловой системы приложениями. Если вы попытаетесь открыть, прочитать или записать локальные файлы, вы обнаружите, что (a) неправильные разрешения для каталога, который вы пытаетесь использовать [см. Выше], и (b) пути файлов Unix отличаются. Не сильно отличается, но достаточно отличается, чтобы что-то сломалось неясным образом.
- Об этом говорится в каждой книге по программированию в Unix / Linux. Это не сильно отличается от Windows, просто достаточно отличается, чтобы сбить вас с толку в первый раз. Напишите PHP-страницы, похожие на «hello world», чтобы ускорить простейшую версию загрузок или загрузок, просто чтобы убедиться, что у вас есть все части и части на месте. Затем исправьте свое полное приложение, чтобы сделать это правильно.
Из оставшихся проблем 80% будет создано для подпроцесса. Windows делает это по-другому. Одна из самых важных вещей в Unix - помнить, что ваш подпроцесс - это ваш ребенок, и вы должны ждать его завершения, чтобы ОС могла очиститься. Если вы думаете о подпроцессе как о параллельном элементе «запускай и забывай», у вас будут процессы зомби, и вы будете вынуждены делать периодические перезагрузки.
- Напишите очень простые страницы PHP, чтобы ускорить управление подпроцессами. Золотое правило - управлять своими детьми и убирать за ними. Затем исправьте свое полное приложение, чтобы сделать это правильно.
Остальные проблемы будут тривиальными в логике приложения, но из-за различий в платформах вы будете обвинять Unix, прежде чем обнаружите ошибку в приложении PHP.