Индивидуальные настройки PHP для сайтов
Довольно часто могут возникать ситуации, когда необходимо, чтобы PHP-файлы в определенном каталоге обрабатывались интерпретатором PHP с отличной от основной версией. Например, это может потребоваться для тестирования новой версии сайта или в том случае, если на одном аккаунте размещается несколько сайтов, требующих различных настроек PHP.
Данная статья описывает способ настройки произвольного количества независимых версий PHP для работы в рамках одного аккаунта. Суть метода заключается в использовании собственного CGI-обработчика (враппера). Фактически, будет создан CGI-скрипт, единственной задачей которого будет правильная настройка переменных окружения и запуск интерпретатора PHP нужной версии. Затем при помощи единственной директивы в файле .htaccess веб-сервер будет проинструктирован о том, что все файлы с расширением .php внутри определенного каталога должны обрабатываться этим CGI-скриптом.
Рассмотрим на примере вариант решение данной задачи: пусть требуется для сайта site1.ru настроить обработку скриптов средствами PHP 5.2.11, в то время, как остальные сайты аккаунта продолжат работу с версией, указанной в панели управления хостингом.
-
Авторизуйтесь на сервере хостинга, используя реквизиты доступа по SSH. Для установки соединения можно воспользоваться программой PUTTY и инструкциями из статьи SSH-доступ, авторизация по ключу, использование SFTP.
-
Создайте файл с CGI-скриптом (собственным PHP интерпретатором):
touch ~/site1.ru/cgi-bin/php5.2.11 && chmod 755 ~/site1.ru/cgi-bin/php5.2.11
-
Созданный файл нужно заполнить следующим текстом:
#!/bin/sh
export PHPRC="/home/uXXXXX/site1.ru"
exec /usr/bin/php-cgi5.2.11 $@
здесь:
uXXXXX -- имя Вашего пользователя на сервере хостинга. В большинстве случаев, совпадает с логином
/usr/bin/php-cgi5.2.11 -- собственно PHP v5.2.11
PHPRC -- переменная окружения, указывающая PHP каталог с конфигурационным файлом php.ini
Список установленных на сервере версий PHP можно посмотреть при помощи следующей команды:
ls /usr/bin/php-cgi*
-
Конфигурационный файл php.ini скопируем из каталога с настройками основной версии PHP:
cp ~/etc/php/php.ini ~/site1.ru/
-
В скопированном файле нам потребуется поправить значение параметра extension_dir - нужно текущее значение заменить на следующее:
/usr/lib/php5.2.11
здесь имя целевого каталога определяется исходя из номера выбранной версии. Например, для PHP 5.3.1 целевой каталог с расширениями будет иметь имя php5.3.1.
-
Теперь необходимо сообщить веб-серверу Apache о том, что для обработки PHP-файлов у нас будет использоваться собственный враппер. Создадим файл .htaccess в каталоге с именем сайта site1.ru и запишем в него следующее указание:
Action application/x-httpd-php "/cgi-bin/php5.2.11"
-
Проверьте работоспособность выполненной конфигурации. Для этого создадим в каталоге ~/site1.ru/www/ файл phpinfo.php со следующим содержимым:
<?php
phpinfo();
?>
-
Обратившись к созданному файлу через браузер, убедитесь в том, что Вы используете собственную конфигурацию PHP с версией 5.2.11. Это означает, что настройки выполнены правильно.