Pull to refresh

Несколько версий PHP под одним Apache на Windows (v2)

Reading time2 min
Views12K
Данный туториал нам не подошел, потому что на фирме действует документ, регламентирующий структуру директорий на локалке, и все сайты (около 250) у нас лежат в одной директории. Понимаю и не устаю повторять, что данный документ это полный бред, но начальство не переубедишь. Поэтому возникла необходимость быстро переключаться между версиями PHP ничего никуда не перемещая, без «этих ваших денверов и опынсерверов и прочего, все должно быть с коробки, приду правэрю, иначе уволю!».

И так, структура директорий:

C:\Server\Apache24
C:\Server\PHP55
C:\Server\PHP56
C:\Server\PHP57
C:\Server\home тут директории с сайтами

В C:\Server\Apache24\conf\ копируем/вставляем 3 копии httpd.conf и переименовываем их в httpd55.conf, httpd56.conf и httpd7.conf, каждый файл конфигурации для своей версии PHP соответственно. Я сначала сконфигурировал один конфиг апача, затем после его копипасты на 3 файла подключил в каждом файле:

свои версии PHP
#конфиг httpd55.conf
LoadModule php5_module "C:/Server/PHP55/php5apache2_4.dll"
<IfModule php5_module>
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Server/PHP55"
</IfModule>

#конфиг httpd56.conf
LoadModule php5_module "C:/Server/PHP56/php5apache2_4.dll"
<IfModule php5_module>
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Server/PHP56"
</IfModule>

#конфиг httpd7.conf
LoadModule php7_module "C:/Server/PHP7/php7apache2_4.dll"
<IfModule php7_module>
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Server/PHP7"
</IfModule>

Далее через консоль создаем 3 сервиса Windows для каждой версии PHP, указывая какой конфиг будет использовать апач:


C:\Server\Apache24\bin\httpd.exe -k install -n "Apache PHP5.5" -f "C:\Server\Apache24\conf\httpd55.conf"
C:\Server\Apache24\bin\httpd.exe -k install -n "Apache PHP5.6" -f "C:\Server\Apache24\conf\httpd56.conf"
C:\Server\Apache24\bin\httpd.exe -k install -n "Apache PHP7" -f "C:\Server\Apache24\conf\httpd7.conf"

Не забудьте оставить автозапуск только у одной службы Апача. У меня стоит только у PHP5.6, на PHP5.5 и PHP7 переключаюсь по необходимости.

Результат:

  • можно конфигурировать каждый Apache сервер под свой PHP
  • для смены версии PHP достаточно остановить один сервер и запустить другой из ApacheMonitor

P.S. За этот костыль мне даже премию выдали :)
Tags:
Hubs:
+12
Comments30

Articles