Задача возникла из-за того, что у предприятия было несколько сайтов на сервере под разными коммерческими продуктами (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