Pull to refresh

Несколько версий PHP на Windows машине

Reading time3 min
Views8.5K
Весьма актуальная задача: Иметь возможность по клику мыши менять версию PHP на Windows машине. Ранее была подобная статья, в которой создаётся 3 копии httpd.conf. Зачем? Когда есть наипростейшее решение.

Скачиваем архив с Apache HTTPd и распаковываем его в папку, например, C:\a\apache. В папке C:\a\apache\conf создаём два файла конфигурации…

php5.conf
LoadModule php5_module "c:/a/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "c:/a/php"

php7.conf
LoadModule php7_module "c:/a/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "c:/a/php"

… и добавляем строку:

Include conf/php.conf

В файл C:\a\apache\conf\httpd.conf после всех LoadModule.

Создаём символическую ссылку php.conf <===> php5.conf

Скрытый текст
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php5.conf

Скачиваем необходимые версии PHP…


… и распаковываем их в папки C:\a\php56 и C:\a\php70 соответственно.

Ранее, в конфигах Apache, мы указали, что PHP следует цеплять из директории C:\a\php, по-этому создаём символическую ссылку php <===> php56:

Скрытый текст
mklink /d c:\a\php c:\a\php56

Теперь инсталируем сервис…

Скрытый текст
c:\a\apache\bin\httpd -k install -n ApacheHTTPd
c:\a\apache\bin\httpd -k start -n ApacheHTTPd

… и создаём bat'ники для выбора версии PHP:

php56.bat
@echo off
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
del c:\a\apache\conf\php.conf
rd c:\a\php
mklink /d c:\a\php c:\a\php56
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php5.conf
c:\a\apache\bin\httpd -k start -n ApacheHTTPd

php70.bat
@echo off
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
del c:\a\apache\conf\php.conf
rd c:\a\php
mklink /d c:\a\php c:\a\php70
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php7.conf
c:\a\apache\bin\httpd -k start -n ApacheHTTPd

Теперь, для удобства, создаём ярлыки для bat'ников, и указываем в свойствах каждого «Запуск от имени администратора».

Спасибо за внимание!

UPD:

По подсказке gewisser сделал немного иначе:

В папке C:\a\apache\conf создал два конфигурационных файла:

… для PHP 5.6
LoadModule php5_module "c:/a/php56/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "c:/a/php56"
Include "c:/a/apache/conf/httpd.conf"

… для PHP 7.0
LoadModule php7_module "c:/a/php70/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "c:/a/php70"
Include "c:/a/apache/conf/httpd.conf"


… а из файла httpd.conf удалил строку
Include conf/php.conf


И поменял bat'ники для запуска:

… для PHP 5.6
@echo off & title Apache HTTPd with PHP 5.6
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
c:\a\apache\bin\httpd -k uninstall -n ApacheHTTPd
c:\a\apache\bin\httpd -k install -n ApacheHTTPd -f "c:/a/apache/conf/php56.conf"
c:\a\apache\bin\httpd -k start -n ApacheHTTPd

… для PHP 7.0
@echo off & title Apache HTTPd with PHP 7.0
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
c:\a\apache\bin\httpd -k uninstall -n ApacheHTTPd
c:\a\apache\bin\httpd -k install -n ApacheHTTPd -f "c:/a/apache/conf/php70.conf"
c:\a\apache\bin\httpd -k start -n ApacheHTTPd


P.S.

Этот способ не является каким-то ноу-хау или чем-то ещё, чем будут пользоваться миллионы, это всего лишь ответ на пост как наиболее удобный вариант.

Многие знакомы с многочисленными WAMP-комплектами, однако, судя по тому, что подобных статей не мало, можно сделать вывод, что не все хотят ими пользоваться.

Если общество не против, пишите в комменты ссылки на подобные комплекты и подобные статьи, я их прикреплю к своей статье.

Спасибо!
Tags:
Hubs:
+4
Comments45

Articles