Несколько версий PHP под одним Apache на Windows (v2)
И так, структура директорий:
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 файла подключил в каждом файле:
#конфиг httpd55.conf
LoadModule php5_module "C:/Server/PHP55/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Server/PHP55"
#конфиг httpd56.conf
LoadModule php5_module "C:/Server/PHP56/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Server/PHP56"
#конфиг httpd7.conf
LoadModule php7_module "C:/Server/PHP7/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/Server/PHP7"
Далее через консоль создаем 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. За этот костыль мне даже премию выдали :)
Комментарии (12)
10 октября 2016 в 16:45
+2↑
↓
Это же очевидно! Разве нет?10 октября 2016 в 16:57
0↑
↓
Именно! Только этого толком нигде не описано. Или я плохой юзер гугла? «Тысячи их», вопросов, как поставить РНР7 и оставить РНР5.*, виртуальные машины создают, доп. модули на апач ставят, зачем, если цель одна и решение очевидно?10 октября 2016 в 17:03
+1↑
↓
простые вещи могут быть не описаны, потому что они простые и до них догадаться можно самому не найдя ответа в гугле (если туда полезли за более лучшим)10 октября 2016 в 17:45 (комментарий был изменён)
+2↑
↓
Просто зачем создавать три сервиса apache, если вы не сможете их одновременно запустить?Ваше решение весьма специфично (костыль), и подходит только для вас. Собственно оно практически ничем не отличается от установки трех разных апачей со своим PHP, кроме экономии пары мегабайт на диске.
В качестве более продвинутого костыля, можно было бы настроить все таким образом, что структура каталога сохранялась, отдельно запускается три apache на разных портах, настраивается прозрачный прокси, в конфигах которого указывается на какой apache какой сайт будет перенаправлять.
10 октября 2016 в 18:51 (комментарий был изменён)
0↑
↓
При этом nginx как прозрачный прокси еще и позволяет приблизить конфиги на дев-машине к боевым… (т.к. не так уж и редко используется связка nginx+httpd, кроме популярного nginx+php-fpm)
10 октября 2016 в 17:53
+1↑
↓
туториал как сделать 3 версии php для linux:
1. Берём gentoo
2. Ставим нужные версии
3. И через eselct меняем версиюВсё же windows для меня довольно сложная штука…
10 октября 2016 в 17:56
+1↑
↓
А если у меня убунту?/sarkazm/ Какой же этот линукс неудобный. Захотел 3 версии PHP — надо всю систему переустанавливать.
10 октября 2016 в 18:07
0↑
↓
с убунту уже кастыли, либо 3 lxc контейнера, либо phpbrew.10 октября 2016 в 18:30
0↑
↓
PHP-FPM10 октября 2016 в 18:36
0↑
↓
да в принципе возможно если скомпилировать в разные директории, и при конфигурации указать разные директории настроек. Но сдаётся мне что демоны одновременно не запустишь, а может и запустишь.10 октября 2016 в 18:47
0↑
↓
https://www.sitepoint.com/run-multiple-versions-php-one-server/
Если делать как здесь, все прекрасно работает.10 октября 2016 в 18:50
0↑
↓
Ну я только что выше об этом и сказал, если их скомпилировать в разные директории они должны завестись.