Бывает что какому нибудь скрипту для нормальной его работы требуется PHP определённой версии. А так как по дефолту при установке хостинг панели ISPConfig 3 устанавливается только одна версия PHP 5.3 то желательно установить недостающие версии PHP 5.2 и 5.4. Сделать это можно довольно просто руководствуясь описанием ниже.
Начнём с установки пакетов необходимых для сборки PHP. Соединяемся с сервером по SSH и выполняем команду:
aptitude install build-essential libapache2-mod-fastcgi build-dep php5 libfcgi-dev libfcg libxml2-dev libbz2-dev libcurl3-dev libjpeg62-dev libpng12-dev libc-client-dev libmcrypt-dev libmhash-dev libmysqlclient-dev libpq-dev libxpm-dev libfreetype6-dev
После этого можно приступать к сборке PHP версии 5.2. Для этого выполняем серию команд:
mkdir /opt/php-5.2.17
mkdir -p /usr/src/iserver/ && cd /usr/src/iserver/
wget -c -t0 http://ua1.php.net/distributions/php-5.2.17.tar.bz2
tar jxf php-5.2*tar.bz2
cd /usr/src/iserver/php-5.2.17/
Следующая команда запустит конфигурирование PHP 5.2.17
./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-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr \
--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
После окончания конфигурирования запускаем сборку и установку командами:
make
make install
Далее необходимо создать конфигурационный файл php.ini Для этого выполняем команду:
cp /usr/src/iserver/php-5.2.17/php.ini-recommended /opt/php-5.2.17/lib/php.ini
Проверяем версию интерпретатора PHP
/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
Теперь приступим к сборке и установке PHP 5.4.13. Выполним команды:
mkdir /opt/php-5.4.13
mkdir -p /usr/src/iserver/ && cd /usr/src/iserver/
wget -c -t0 http://ua1.php.net/distributions/php-5.4.13.tar.bz2
tar jxf php-5.4*tar.bz2
cd /usr/src/iserver/php-5.4.13/
Запуск конфигурирования:
./configure \
--prefix=/opt/php-5.4.13 \
--with-config-file-path=/opt/php-5.4.13 \
--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-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr \
--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-fpm
Запускаем установку:
make
make install
Создаём файл php.ini
cp /usr/src/iserver/php-5.4.13/php.ini-production /opt/php-5.4.13/lib/php.ini
На этом работа в консоли закончена. Далее необходимо добавить установленные версии PHP в панели ISPConfig 3. Заходим в панель под администратором, переходим Система - Addition PHP Versions нажимаем кнопку Add new PHP version. Заполняем поле PHP Name: php-5.2.17
После этого переходим во вкладку FastCGI Setting, заполняем поля:
- Path to the PHP FastCGI binary: /opt/php-5.2.17/bin/php-cgi
- Path to the php.ini directory: /opt/php-5.2.17/lib
Сохраняем изменения.
Далее по такому же принципу добавляем PHP 5.4.13 прописывая в поле PHP Name: php-5.4.13
Во вкладке FastCGI Setting прописываем:
- Path to the PHP FastCGI binary: /opt/php-5.4.13/bin/php-cgi
- Path to the php.ini directory: /opt/php-5.4.13/lib
Незабываем сохранить изменения. После этих манипуляций Система - Addition PHP Versions будет выглядеть как на скриншоте:
Теперь проверим в работе установленные версии PHP. Зайдём в панель под учётной записью пользователя, выберем любой домен и в настройках сменим версию PHP на php-5.2.17, сохраним изменения.
Теперь в корень сайта на выбраном домене по FTP закачаем файл info.php. Обратимся к нему http://ваш-домен/info.php
Выведется страница с версией PHP как на скриншоте.
Теперь проверим версию 5.4. Возвращаемся в панель, в настройках выбираем php-5.4.13. Сохраняем изменения. Через пару минут изменения вступят в силу. В браузере обновляем страницу и видим что версия PHP теперь другая.
Для возвращения на дефолтную версию 5.3.3 необходимо в списке выбрать Default и сохранить изменения.
Внимание! Если вы всё сделали правильно но у клиентов по прежнему нет возможности выбора версии PHP то необходимо установить пачт для панели ISPConfig 3. Для этого в консоли (под рутом) выполняем команды:
cd /usr/local/ispconfig/server/scripts
wget http://www.ispconfig.org/downloads/ispconfig_patch
chmod 700 ispconfig_patch
chown root:root ispconfig_patch
ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch
ispconfig_patch
И на запрос скрипта вводим id патча:
3053_phpversion
Соглашаемся выбирая y и нажимая Enter. После применения этого патча выбор версий у клиентов будет работать.