Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль Apache2) на одном сервере под управлением Ubuntu 10.04+
Ситуация проста: на новый и очаровательный сервер с Ubuntu 10.04+ и современным PHP 5.3, пригодным для всех актуальных версий CMS, вдруг требуется подселить старый-старый сайт, начинающий сыпать ошибками при попытке запуска на PHP 5.3 (подавай ему чего-нибудь постарше, например, PHP 5.2). Кто виноват — понятно. Но что делать?
Не паниковать! На одном сервере с одним Apache2 прекрасно заводятся и соседствуют PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль Apache2). Мы далее решим проблему так, что указать какой именно PHP использовать можно будет на уровне настроек виртуального хоста.
Скачиваем дистрибутив php 5.2:
wget http://www.php.net/get/php-5.2.17.tar.gz/from/ru.php.net/mirror
Переименовываем полученный файл во что положено:
mv mirror php-5.2.17.tar.gz
Распаковываем архив:
tar zxvf php-5.2.17.tar.gz
Заходим в директорию:
cd php-5.2.17
Устанавливаем зависимости:
sudo aptitude install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev
Конфигурируем, собираем и ставим из исходников наш php 5.2 в директорию /opt/php5.2:
./configure --prefix=/opt/php5.2 --with-config-file-path=/opt/php5.2 --with-mysqli --with-mysql --with-curl --with-gd --with-jpeg-dir --enable-cli --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect
make
sudo make install
Мы, убунтоводы, избалованы готовыми пакетами, так что наберитесь терпения: с непривычки может показаться, что сборка (по команде make) занимает много времени :-)
Когда всё установиться, можно убедиться в том, что на вашем сервере теперь появилась нужная версия php такой командой:
/opt/php5.2/bin/php -v
Однако, про этот php пока ничего не знает наш уважаемый веб-сервер Apache2. Мы их познакомим через fastcgi.
Ставим:
sudo aptitude install libapache2-mod-fastcgi
Включаем нужные модули Apache2:
sudo a2enmod cgi fastcgi actions
Перезапускаем Apache, чтобы модули подцепились:
sudo service apache2 restart
Теперь создадим файл (он будет просто обёрткой, вызывающей наш исполнимый бинарник /opt/php5.2/bin/php-cgi, но с нужными настройками, которые вы можете изменить или дополнить):
sudo nano /usr/lib/cgi-bin/php52-cgi
И туда поместим буквально следующее:
#!/bin/sh
PHPRC="/opt/php5.2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.2/bin/php-cgi
Сделаем файл исполнимым:
sudo chmod +x /usr/lib/cgi-bin/php52-cgi
Теперь создадим необходимую часть конфига для виртуальных хостов, которым потребуется php 5.2:
sudo nano /etc/apache2/php52.conf
Поместим в файл следующее:
<FilesMatch "\.php">
SetHandler application/x-httpd-php5
</FilesMatch>
ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi
Action application/x-httpd-php5 /php52-cgi
AddHandler application/x-httpd-php5 .php
Теперь давайте пойдём в конфиг того виртуального хоста, который должен работать с php 5.2 и добавим в него следующую строку (например, после DocumentRoot...):
...
Include php52.conf
...
Перезапустим Apache, чтобы подцепились новые настройки виртуального хоста:
sudo service apache2 restart
Готово! Идите на нужный хост и проверяйте: он теперь обслуживается php 5.2.
- 3943 просмотра


Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Занятно. Только стоит ли морочить голову . Можно просто подключить те старые библиотеки, которые не поддерживаются. Мне кажется, это было бы проще.
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
В тех ситуациях, когда на одном серваке приходится держать и старые, и новые сайты, считаю, что стоит. Вся описанная морока — одноразовая. Она гарантирует полную совместимость, избавляет даже от всяких ворнингов на тему деприкейтед-элементов и передаче не по ссылке.
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Возможно и так. Но гораздо большевариантов, когда пытаются совместить php4 и 5. Будет ли это работать?
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Я не проверял, но должно. Поскольку вместо конкретно этого /opt/php5.2/bin/php-cgi вызываться для обработки может всё, что угодно. То есть достаточно собрать php 4 и отредактировать /usr/lib/cgi-bin/php52-cgi так, чтобы он ссылался на другой бинарник (на php 4).
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Помогите пожалуйста. не ставится зависимости. aptitude command not found
Устанавливаем зависимости:
sudo aptitude install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev
Конфигурируем, собираем и ставим из исходников наш php 5.2 в директорию /opt/php5.2:
loading cache ./config.cache
checking for Cygwin environment... no
checking for mingw32 environment... no
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... no
checking for cc... no
configure: error: no acceptable cc found in $PATH
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Сначала сделайте так:
sudo apt-get install aptitudeRe: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Здравствуйте!
а как прикрутить pdo_mysql к 5.2 , а то modx ругается.
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
./configure --prefix=/opt/php5.2 --with-config-file-path=/opt/php5.2 --with-mysqli --with-mysql --with-curl --with-gd --with-jpeg-dir --enable-cli --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect --with-mysqli --with-pdo-mysql
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Спасибо за публикацию. В целом получилось, но мне не удалось задействовать расширения PHP(extentions), в частности fileinfo.so, данные сервера - Ubuntu, Apache, MYSQL, PHP. Что-нибудь посоветуете?
Re: Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль ...
Расширения PHP работают. Причина была в неудачном апгрейде сервера, в частности PHP. Кто использует расширения надо обратить внимание на extension_dir, по умолчанию указывается несуществующая папка, я прописал в php.ini Если используется графическое расширение freetype, можно скомпилировать 5.2.11 версию - есть в сборке, нужно только указать в configure.
Отправить комментарий