Правила настройки PHP

Материал из wiki.owlhost.net
Перейти к: навигация, поиск

Достаточно часто у пользователей виртуального хостинга и серверов возникают сложности с настройкой интерпретатора PHP. В данной статье речь идет об основных принципах настройки PHP, соблюдение которых позволит правильно настроить интерпретатор и не допустить ошибок.

Имея root-доступ к серверу, вносить изменения в настройку PHP можно путем редактирования основных конфигурационных файлов Apache и PHP - httpd.conf или php.ini. На пользовательском уровне для настройки PHP используются файлы .htaccess, пользовательский php.ini и .user.ini (для PHP 5.3 и выше). Файл .user.ini в PHP 5.3 и выше можно использовать для настроек на уровне отдельного каталога, а не для всего пользовательского аккаунта на севрере, по аналогии с .htaccess.

Способ настройки PHP зависит от режима работы интерпретатора: если PHP работает в режиме Apache, то для его настройки можно использовать основной конфигурационный файл php.ini (обычно это файл /etc/php.ini), а также httpd.conf и .htaccess (с использованием префиксов php_flag для бинарных параметров, и php_value для числовых параметров). Если же PHP работает в CGI-режиме, то для его настройки можно использовать только php.ini или user.ini. В этом режиме работы PHP опции php_flag и php_value в httpd.conf будут причиной ошибки при запуске веб-сервера Apache!

Параметры конфигурации PHP различаются по режимам, определяющим правила изменения директив настройки интерпретатора: PHP_INI_PERDIR, PHP_INI_SYSTEM, PHP_INI_USER, PHP_INI_ALL. К примеру, некоторые параметры конфигурации PHP могут быть установлены с помощью PHP-скрипта, использующего функцию ini_set(), тогда как другие параметры можно задать только в php.ini или httpd.conf (.htaccess).

Рассмотрим каждый режим более подробно:

PHP_INI_PERDIR - Параметр уровня каталога. Значение может быть установлено в php.ini, .htaccess или .user.ini - для PHP 5.3 и выше.
PHP_INI_SYSTEM - Параметр системного уровня. Значение  может быть установлено только в php.ini или httpd.conf
PHP_INI_USER - Значение может быть установлено в пользовательских скриптах (с помощью ini_set()). С версии PHP 5.3 значение может быть установлено в .user.ini
PHP_INI_ALL - Значение может быть установлено отовсюду

Синтаксис директив настроек PHP для php.ini и для .htaccess отличается. Рассмотрим эти различия более подробно и приведем примеры.

Синтаксис директив для php.ini (и для .user.ini) будет иметь вид:

option = value

В .htaccess директивы настроек PHP задаются с помощью префиксов php_value (для числовых значений) и php_flag (для логических значений, on/off или 1/0), знак «=» не нужен. Синтаксис для .htaccess будет таким:

php_flag option off (on)
php_value option value

Приведем пример: необходимо включить регистрацию глобальных переменных. За регистрацию глобальных переменных в PHP отвечает директива register_globals, которая может принимать логические значения.

Для php.ini директива будет иметь вид:

register_globals = On

Для .htaccess эта же директива будет иметь вид:

php_flag register_globals On


[править] Полезные ссылки: