пятница, 3 февраля 2012 г.

Одновременное использование php5.2 и php5.3 на одном сервере Debian Squeeze

Есть сайты которые требуют PHP5.3 а есть такие, на которых интерпретатор выдает кучу ошибок и приходится использовать старый 5.2, я понимаю, если вы держите на серваке один сайт, тогда можно его проапгрейдить и решить проблему модификацией своего скрипта, но вот если у вас сотни сайтов чужих на сервере, то я думаю вам будет лень править чужие скрипты, проще дать возможность запускать разные сайты с разным PHP.

Оригинал инструкции тут http://mbi-solutions.blogspot.com/2011/07/running-php-53-and-php-52-on-same.html, но я исправил кое какие ошибки и дополнил инструкцию




wget http://museum.php.net/php5/php-5.2.17.tar.gz

tar -zxvf php-5.2.17.tar.gz

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

cd php-5.2.17

./configure --prefix=/opt/php5.2 \
--with-config-file-path=/opt/php5.2 --with-mysqli \
--with-pdo-mysql --with-mysql --with-curl \
--with-gd --with-jpeg-dir --with-xsl --with-zlib \
--enable-cli --enable-fastcgi --enable-discard-path \
--enable-force-cgi-redirect --with-iconv --with-gettext \
--with-curl --with-bz2 --enable-mbstring=all --enable-zip

make && make install

после успешной установки создаем файл
/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





делаем его исполняемым

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



создаем файл /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



Теперь делаем финальные манипуляции с апачем
apt-get install libapache2-mod-fastcgi
a2enmod cgi fastcgi actions


И перезагружаем апач
/etc/init.d/apache2 restart




Теперь можете добавлять в любой конфиг виртуалхоста строчку

Include php52.conf




но обратите внимание на директорию

<Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
</Directory>



если у вас такого не прописано в конфиге виртуалхоста, то пропишите, иначе будет ругаться на отсутствие доступа.

По аналогии можно подключить например php4 или php6 и адаптировать свою хостинг-панель для возможности выбора версии php.