При переносе своих сайтов с webhosting на VPS с Debian 7 amd64 и PHP5.4.4 я столкнулся с тем, что имеющиеся у меня CMS не хотят на данной версии PHP работать - слишком много функций было подавлено или изменнено в PHP5.3 и тем более в PHP5.4, при крайне низкой обратной совместимости. Как временное решение, я параллельно установил PHP5.2.17, на котором работает без ошибок практически любой код с требованием использования PHP не ниже 4.1. Так как в репозитории Debian 7 нет такой версии PHP, то из разных вариантов (альтернативные packages, использование сторонних репозиториев, собственная компиляция) я решил использовать последний, как исключающий любые возможные сторонние вкрапления кода. Для установки PHP5.2.17 я использовал эту инструкцию для хостинг-провайдеров по мультиустановке разных версий PHP, для настройки сайтов на использование данной версии PHP взял фрагмент этого поста. Чистые операции по установке и использованию PHP5.2.17 на Debian 7 amd64 приведены ниже. Все команды выполняются от имени суперпользователя (root):
aptitude install php5-dev libxml2-dev libmhash-dev libcurl4-openssl-dev libbz2-dev libmagickwand-dev libpng12-dev libfreetype6-dev libgmp-dev libc-client2007e-dev libpspell-dev libsnmp-dev libtidy-dev libxslt1-dev make build-essential libmcrypt-dev libmysqld-dev libmagic-dev unzip libpq-dev
cp /usr/lib/x86_64-linux-gnu/libjpeg.* /usr/lib/
cp /usr/lib/x86_64-linux-gnu/libpng.* /usr/lib/
cp /usr/lib/x86_64-linux-gnu/libmysqlclient.* /usr/lib/
cp /usr/lib/x86_64-linux-gnu/libkrb5.* /usr/lib/
cp /usr/lib/x86_64-linux-gnu/libssl.* /usr/lib/
mkdir /opt/php-5.2.17
mkdir -p /usr/src/iserver/ && cd /usr/src/iserver/
mkdir /usr/src/iserver/php-5.2.17/
cd /usr/src/iserver/php-5.2.17/
wget -c -t0 http://museum.php.net/php5/php-5.2.17.tar.bz2
tar jxf php-5.2*tar.bz2
wget http://php52-backports.googlecode.com/files/php52-backports-20130717.patch
patch -p1 < php52-backports-20130717.patch
wget http://softnastroy.com/downloads/debian_patches_disable_SSLv2_for_openssl_1_0_0.patch.patch.txt
patch -p1 < debian_patches_disable_SSLv2_for_openssl_1_0_0.patch.patch.txt
./configure \
--prefix=/opt/php-5.2.17 \
--with-config-file-path=/opt/php-5.2.17 \
--with-pdo-pgsql \
--with-zlib-dir \
--with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable-calendar \
--with-curl=/usr/bin \
--with-mcrypt \
--with-zlib \
--with-gd \
--with-pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr/lib/x86_64-linux-gnu \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-openssl \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--enable-cli \
--enable-fastcgi \
--enable-discard-path \
--enable-force-cgi-redirect \
--enable-cgi \
--enable-bcmath
make
make install
cp /usr/src/iserver/php-5.2.17/php.ini-recommended /opt/php-5.2.17/lib/php.ini
/opt/php-5.2.17/bin/php -v
PHP 5.2.17 (cli) (built: Mar 20 2013 10:32:00)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
sudo aptitude install apache2-suexec libapache2-mod-fcgid
sudo a2enmod cgi fcgid actions
sudo service apache2 restart
sudo nano /usr/lib/cgi-bin/php5.2.17-cgi
#!/bin/sh
PHPRC="/opt/php-5.2.17/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php-5.2.17/bin/php-cgi
sudo chmod +x /usr/lib/cgi-bin/php5.2.17-cgi
sudo nano /etc/apache2/php5.2.17.conf
SetHandler application/x-httpd-php5ScriptAlias /php5.2.17-cgi /usr/lib/cgi-bin/php5.2.17-cgi
Action application/x-httpd-php5 /php5.2.17-cgi
AddHandler application/x-httpd-php5 .php
Include php5.2.17.conf
sudo service apache2 restart
Теперь у меня сайты работают на PHP5.2.17, а все новые приложения (web-панель администратора, phpmyadmin) - на PHP5.4.4. Со временем и сайты переведу на него.
Updated
После перехода с MySQL 5.5 на 5.6 вскоре обнаружил существенный прирост выделяемой MySQL памяти и что apache error log забит "руганью" про неправильный размер "userspace". Так как данная версия PHP уже не обновляется из репозитория, то пришлось просто заново повторить все эти операции точь-в-точь. И проблема ушла. Но теперь надо проверять такие результаты после каждого обновления MySQL
Отправить новый комментарий