Бывают ситуации, когда необходимо для одного или нескольких сайтов на хостинге подключить другую версию PHP. Например, ситуация, когда собрали веб-сервер с PHP-7.x (актуально на момент написания), а у вас есть сайт который может работать максимум с версией PHP 5.х. Яркий пример сайт на Joomla 1.5.
В этой ситуации решение я нашел для себя следующее:
1. Для начала собираем WEB-Server с 2-мя установленными версиями PHP.
2. Ставим вторую версию PHP — PHP-5.6 (на момент написания максимальная версия ветки), ставится с расширением php5.6-cgi.
apt-get install php5.6 php5.6-cgi php5.6-mysql libapache2-mod-php5.6 php5.6-mbstring php5.6-zip php5.6-gd php5.6-xml php5.6-curl
3. Проверим наличие установленных версий и версию по умолчанию.
update-alternatives --config php
4. Проверим наличие скомпилированного фала php5.6 в /usr/lib/cgi-bin/.
5. Запускаем модуль апача для работы с cgi и перезапускаем.
a2enmod actions
service apache2 restart
a2enmod cgi
service apache2 restart
6. Включим конфиг апача serve-cgi-bin
a2enconf serve-cgi-bin
service apache2 restart
Осталось настроить наши виртуальные хосты для работы с другой версией (не по умолчанию) PHP.
7. В файл /etc/apache2/sites-available/*-default.conf (там находятся все виртуал хосты) добавляем строчки для запуска PHP-5.6 в настройки необходимого хоста, т.е. между <VirtualHost> </VirtualHost>
<FilesMatch \.php$>
SetHandler application/x-httpd-php5.6
</FilesMatch>
AddHandler application/x-httpd-php5.6 .php
Action application/x-httpd-php5.6 /cgi-bin/php5.6
Перезапускаем Apache и все должно работать.
service apache2 restart
Заметка:
Переключение между версиями по умолчанию
php5.6 -> php7.0
a2dismod php5.6 ;
a2enmod php7.0 ;
service apache2 restart
update-alternatives --set php /usr/bin/php7.0
php7.0 -> php5.6 :
a2dismod php7.0 ;
a2enmod php5.6 ;
service apache2 restart
update-alternatives --set php /usr/bin/php5.6
Хэй, автор. Спасибо.
Привет, бро.
Спасибо!