Часто возникает задача, когда требуется протестировать работу сайтов одновременно в двух версиях PHP: четвертой и пятой. Для этого многие использовали хитроумные способы, вроде установки двух Apache 1.3 и 2.2, где под Apache 1.3 крутился PHP4, а под Apache 2.2 – PHP5. Но Apache 1.3 уже давно устарел и не поддерживается, поэтому резонно использовать последнюю стабильную версию Apache из ветки 2.2. В данной статье я расскажу, как заставить работать на одной машине несколько экземпляров Apache 2.2 с целью запуска PHP различных версий.
Рассмотрим поэтапно процедуры, которые необходимо проделать:
1) Скачать последнюю версию Apache 2.2 (http://httpd.apache.org/download.cgi)
2) Установить на сервер в директорию D:\Apache2.2 (для примера)
3) Убедиться в том, что Apache корректно работает, проверить его запуск/останов в менеджере сервисов
4) Удалить текущий сервис Apache2.2, который установился по умолчанию:
httpd –k uninstall –n Apache2.2
Удаление необходимо для того, чтобы можно было в будущем легко идентифицировать, какой экземпляр Apache относится к PHP4, а какой к PHP5. По умолчанию в сервисах будет безликий Apache2.2
5) Создать заготовки конфигурационных файлов для будущих экземпляров сервисов Apache: httpd_php4.conf и httpd_php5.conf
6) Запустить командную строку с правами администратора. Для этого создать ярлык с командой cmd, нажать на него правой кнопкой мыши и выбрать «Запуск от имени администратора». Иначе не хватит привилегий для создания новых сервисов.
7) Установить новые экземпляры сервисов. Дадим имена новым сервисам PHP4 и PHP5:
httpd –k install –n PHP4 –f "D:\Apache2.2\conf\httpd_php4.conf" httpd –k install –n PHP5 –f "D:\Apache2.2\conf\httpd_php5.conf"
8) В менеджере сервисов убедиться, что появились новые сервисы PHP4 и PHP5
9) Убедиться, что конфигурационные файлы разных экземпляров используют различные порты. Стараться не занимать системные порты (81,82 и прочие с коротким номером). В httpd_php4.conf прописать Listen 127.0.0.1:20082, в httpd_php5.conf прописать Listen 127.0.0.1:20081
10) Запустить сервисы PHP4 и PHP5, убедиться в их работоспособности
11) Скачать и установить версии PHP в папки соответственно D:\PHP4 и D:\PHP5
12) Для PHP4 скачать дополнительно файл php4apache2_2.dll, так как он не входит в стандартную поставку. Скопировать его в D:\PHP4
13) Добавить в PATH строку D:\PHP5\;D:\PHP4\;
14) Подключить модули PHP в конфигурационных файлах
В httpd_php5.conf добавить:
PHPIniDir "D:/PHP5/" LoadModule php5_module "D:/PHP5/php5apache2_2.dll"
В httpd_php4.conf добавить:
PHPIniDir "D:/PHP4/" LoadModule php4_module "D:/PHP4/php4apache2_2.dll"
Обратите внимание на слеши. В PHPIniDir они должны быть именно такими, иначе Apache не подцепит нужный php.ini, и PHP4 будет использовать php.ini от PHP5.
15) Запустить сервисы PHP4 и PHP5, через функцию phpinfo() убедиться, что каждая версия PHP использует свой php.ini