Суть в том, что php 5.2 мы установим как CGI, а 5.3 у нас будет работать, как модуль apache.
Качаем последнюю версию php 5.2 и распаковываем:
cd /tmp wget http://get.webpatron.net/php/php-5.2.17.tar.gz tar xzvf php-5.2.17.tar.gz cd php-5.2.17
Сразу поставим те пакеты, которые нам понадобятся, чтобы не натыкаться на ошибки при сборке:
yum install libxml2-devel bzip2-devel curl-devel libjpeg-devel libpng-devel libX11-devel gd-devel libc-client-devel libmcrypt-devel mysql-devel
Готовим исходники php к сборке:
./configure --prefix=/opt/php52 \ --with-config-file-path=/opt/php52/etc \ --with-config-file-scan-dir=/opt/php52/etc/php.d \ --with-libdir=lib64 \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-curl \ --with-gd \ --with-bz2 \ --with-iconv \ --with-imap \ --with-gettext \ --with-pic \ --with-bz2 \ --with-iconv \ --with-zlib \ --with-jpeg-dir \ --with-png-dir \ --with-kerberos \ --with-imap-ssl \ --enable-cli \ --enable-pdo \ --enable-exif \ --enable-ftp \ --enable-magic-quotes \ --enable-fastcgi \ --enable-discard-path \ --enable-bcmath \ --enable-calendar \ --enable-gd-native-ttf \ --enable-libxml \ --enable-mbstring \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-xml \ --enable-wddx \ --enable-zend-multibyte \ --enable-zip \ --enable-sysvsem \ --enable-sysvshm \ --enable-sysvmsg \ --enable-force-cgi-redirect
Компилируем и затем устанавливаем:
make make install
Теперь прикрутим наше php 5.2 к панели ISPmanager. Для этого мы удалим бинарник php-cgi от php 5.3, и вместо него подсунем от нашего 5.2.
rm /usr/bin/php-cgi ln -s /opt/php52/bin/php-cgi /usr/bin/php-cgi
На этом в принципе всё. Теперь, если в свойствах www домена выбрать php как модуль apache, то будет версия 5.3. А если выбрать php как CGI, то будет только что установленная нами 5.2.
Можно сделать ещё красивее, чтобы не забыть и не запутаться. Напишем небольшой плагин к панели ISPmanager для выбора версии PHP.
Идём в папку /usr/local/ispmgr/etc и создаём там файл с именем ispmgr_mod_changerphp.xml
В файл вписываем следующее:
<?xml version="1.0" encoding="UTF-8"?> <mgrdata> <lang name="ru"> <messages name="wwwdomain.edit"> <msg name="cgi">Cgi-bin</msg> <msg name="charset">Кодировка (необяз)</msg> <msg name="hint_php">Эта опция определяет версию PHP</msg> <msg name="index">Индексная стр. (необяз)</msg> <msg name="php">Настройка PHP</msg> <msg name="phpcgi">PHP v5.2.17 (устаревшая)</msg> <msg name="phpfcgi">PHP как FastCGI</msg> <msg name="phpmod">PHP v5.3.28 (рекомендуемая)</msg> <msg name="phpnone">Нет поддержки PHP</msg> </messages> </lang> </mgrdata>
После чего перезагружаем панель командой:
killall -9 ispmgr
Вот, что в итоге у нас получилось. То, что и было нашей задачей — сделать простой выбор версии php для каждого сайта.
Теперь осталось настроить наш php 5.2. Для этого в папке /opt/php52/etc создаём ещё папку php.d и уже в ней, создаём файл php.ini, в который и прописываем необходимые глобальные настройки. Здесь же можно прикрутить и нужную версию zend optimizer, и всё остальное. Также у каждого пользователя на сервере при использовании php 5.2 имеется и собственный php.ini, куда также можно внести настройки для конкретного пользователя.