2014-01-23

Кастомный php на сервере с Cpanel и WHM

Потребовалось обновить PHP на сервере с Cpanel и WHM. Делается это просто, но вот незадача, один из сайтов на сервере закодирован ionCube и максимальная версия PHP а которой он может работать 5.2.

Но мне кровь из носа нужна была версия 5.3. Однако, оказалось, что решить проблему не так уж и сложно, достаточно скомпилировать собственный cgi модуль php.

Указанная техника подойдет для пользователей shared хостингов где есть доступ к компилятору но нет рутовых прав, например это "официальный" способ для клентов masterhost.

Алгоритм получился следующий:

1. закачиваем на сайт скрипт с phpinfo(); и смотрим "configure command" секцию - это нужно чтобы не придумывать опции компиляции вручную - это долго и муторно. В моем случае получилось следующее:

'./configure' '--disable-fileinfo' '--disable-phar' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes' '--enable-mbstring' '--enable-pdo=shared' '--enable-sockets' '--enable-zip' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-bz2' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--with-gettext' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-sqlite=shared' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr'

Выкусываем из этой строки '--with-apxs2=/usr/local/apache/bin/apxs' - это команда сборки php как модуля Apache - мы собираем CGI поэтому она нам не нужна.

заменяем '--prefix=/usr/local' на '--prefix=/home/username/php' - это путь по которому команда make install сложит готовые файлы, мы же не хотим устанавливать php глобально.

Возможно, вы захотите внести какие-либо еще изменения в команду конфигурации.

2. Скачиваем нужную версию php с http://www.php.net/downloads.php

3. Распаковывем и в папке с исходниками запускаем нашу команду конфигурации и сборки.

./configure ...[то что мы подготовили на шаге 1]

make

make install

4. Если все прошло успешно то в папке /home/username/php/bin появится файл php-cgi eго нужно скопировать в папку ~/public_html/cgi-bin/ с именем php: cp "~/php/bin/php-cgi ~/public-html/cgi-bin/php"

5. В .htaccess помещаем следуюшие строчки:

Action php-script /cgi-bin/php
AddHandler php-script .php

Вуаля, новая версия php установлена на сервер. Обратите внимание, все операции можно проделать без рутового доступа, что может пригодится пользователям shared хостингов которым не нравится невозможность вносить изменения в php.ini

php.ini я положил в /home/username/php/lib/php.ini, скопировал существующий из /usr/php/lib/php.ini и внес в него необходимые мне изменения.

Вобщем, все оказалось не так уж и страшно, спасибо masterhost за вот эту инструкцию.

 

комментарии:

 

Для того чтобы каждый раз не представляться можно войти как зарегистрированный пользователь.

Имя*

разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться