Установка нескольких версий PHP на Apache (Debian)

Задача возникла из-за того, что у предприятия было несколько сайтов на сервере под разными коммерческими продуктами (UMI и Bitrix). В какой-то момент для разработки пришлось повысить версию PHP и.... на сайте на Bitrix полезли ошибки. Какие-то возможно было исправить допиливаем кода Bitrix, на виде сайта для пользователей это не сказалось, но основная беда - невозможность редактирования материалов из админки, что было довольно печально. И решение данной проблемы было - поднять старую версию PHP 5.3.29 для этого конкретного сайта.

Погуглив, было найдено несколько мануалов и рассуждений, как поднять две версии РHP на одном хостинге.

Сам процесс, по шагам.

Скачиваем 5.3
wget http://museum.php.net/php5/php-5.3.29.tar.gz

 

Устанавливаем дополнительные необходимые пакеты

apt-get install libxml2-dev libmysqlclient-dev libpng12-dev libjpeg62-dev libcurl4-gnutls-dev

 

Мне также понадобилась библиотека FreeType-Devel, чтобы работала капча на Bitrix:

apt-get install libfreetype6-dev

 

Устанавливаем PHP 5.3 в /opt/php5.3

cd php-5.3.29

./configure --prefix=/opt/php5.3 --with-config-file-path=/opt/php5.3  --with-mysqli --with-mysql --with-curl --with-gd --with-jpeg-dir --with-freetype-dir=/usr/include/freetype2 --with-zlib --enable-cl

 

Если вы несколько раз пересобираете PHP не забудьте на этом этапе сделать:

make сlean

 

А если только один единственный, то идем дальше:

make
make install

 

Проверяем:

Новая установка

/opt/php5.3/bin/php -v
PHP 5.3.29 (cli) (built: Dec 21 2016 11:48:39)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

и версия PHP, установленная в системе:

# php -v
PHP 5.4.45-0+deb7u2 (cli) (built: Oct 17 2015 08:26:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Устанавливаем модуль FastCGI для Апача:

apt-get install libapache2-mod-fastcgi

Получаем:
Пакет libapache2-mod-fastcgi недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list

Правим  


nano /etc/apt/sources.list


Добавляем строку:
deb http://ftp.ru.debian.org/debian wheezy main non-free

Сохраняем.

apt-get update

apt-get install libapache2-mod-fastcgi

a2enmod fastcgi
a2enmod actions

Формируем необходимые файлы:

nano /usr/lib/cgi-bin/php53-cgi

Вставляем туда :


#!/bin/sh
PHPRC="/opt/php5.3/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.3/bin/php-cgi

Делаем скрипт исполняемым

chmod +x /usr/lib/cgi-bin/php53-cgi

Вносим изменения в конфиг Апача:

nano /etc/apache2/php53.conf

Вставляем в файл:

<FilesMatch "\.php">
SetHandler application/x-httpd-php5
</FilesMatch>
ScriptAlias /php53-cgi /usr/lib/cgi-bin/php53-cgi
Action application/x-httpd-php5 /php53-cgi
AddHandler application/x-httpd-php5 .php

 

Ну и наконец прописываем в конфиге хоста, указываем ему использовать собранную версию PHP

 

nano /etc/apache2/sites-available/<ваш-сайт>.ru
<VirtualHost *.80>
........................................
Include php53.conf
.........................................
</VirtualHost>

 

service apache2 restart

Готово.

 

 

Использованы материалы с сайтов:
https://programjutsu.wordpress.com/2011/09/20/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B9-php-%D0%BD%D0%B0-apache-ubuntu/
http://iantonov.me/page/ustanovka-php-52-v-debian-78-sobiraem-staryj-php-iz-ishodnikov
https://cweiske.de/tagebuch/Running%20Apache%20with%20a%20dozen%20PHP%20versions.htm