Директивы php.ini, где и как их можно использовать

dev-languagens Директивы "php.ini" можно определять не только в главном конфигурационном файле php.ini, а и в пользовательских скриптах, в главном конфигурационном файле веб сервера Apache "httpd.conf" и пользовательском файле конфигурации (обычно .htacces), а также в любых из перечисленных выше местах.

В этой статье мы рассмотрим все особенности использования директив конфигурационного файла php.ini, к какой категории относится та или иная директива, где и как её можно определить.

На странице официальной справки по РНР дается пояснение где могут определятся директывы php.ini относящиеся к той или иной категории, согласно справке в РНР существуют такие категории директив:

Mode                Value       Meaning
--------------------------------------------
PHP_INI_USER          1         Значение может быть установлено в пользовательских 
                                скриптах (с помощью ini_set()) или в реестре Windows
PHP_INI_PERDIR        6         Значение может быть установлено в php.ini, 
                                .htaccess или httpd.conf
PHP_INI_SYSTEM        4         Значение может быть установлено в php.ini 
                                или httpd.conf
PHP_INI_ALL           7         Значение может быть установлено отовсюду

Из приведённой выше таблицы можно определить какие категории директив php.ini и каких местах (скрипты пользователя, php.ini, .htaccess, httpd.conf или везде) разрешено определять директиву относящуюся к той или иной категории. Полный список директив, а также их принадлежность к той или иной категории можно найти на официальной странице РНР "Список директив php.ini".

Так, например, директиву "browscap" которая относится к категории "PHP_INI_SYSTEM" мы не сможем определить в пользовательском конфигурационном файле ".htaccess", потому как директивы "php.ini" относящиеся к категории "PHP_INI_SYSTEM" и такие директивы позволено определять только в "php.ini" или "httpd.conf":

# httpd.conf
php_value browscap "/path/browscap/browscap.ini"
; php.ini
;browscap = extra/browscap.ini

Существует четыре директивы при помощи которых можно манипулировать настройками конфигурационного файла "php.ini": php_value, php_flag, php_admin_value, php_admin_value и php_admin_flag. Далее даётся подробное описание каждой из них.

php_value name value - Устанавливает значение обозначенной директивы. Может использоваться только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR Для очистки предыдущих установленных значений используйте значение none. Замечание: Не используйте php_value для установки логических значений. Вместо этого необходимо использовать php_flag (см. ниже).

php_flag name on|off - Используется для установки директивам логических значений. Может быть использовано только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR.

php_admin_value name value - Устанавливает значение обозначенной директивы. Не может быть использовано в файлах .htaccess. Директивы любого типа, установленные с помощью php_admin_value не могут быть переопределены через .htaccess или ini_set(). Чтобы очистить предыдущее значение используйте значение none.

php_admin_flag name on|off - Используется для установки директивам логических значений. Не может быть использовано в файлах .htaccess. Директивы любого типа, установленные с помощью php_admin_flag не могут быть переопределены через .htaccess или ini_set().

Таким образом если мы хотим изменить настройки РНР в пользовательском конфигурационном файле ".htaccess", то для этого мы можем использовать только директивы "php_value" и "php_flag", а изменить сможем только те директивы конфигурационного файла "php.ini" которые относятся к категории PHP_INI_ALL или PHP_INI_PERDIR.

"php_value" и "php_flag" - это, что касается пользовательского конфигурационного файла ".htaccess", а когда же мы хотим изменить настройки "php.ini" прямо из РНР скрипта, то в этом случае мы должны использовать функцию ini_set(string varname, string newvalue) для директив относящихся к категории "PHP_INI_USER" или "PHP_INI_ALL".

Под занавес небольшое замечание по использованию "php_value" и "php_flag" в пользовательском конфигурационном файле ".htaccess". Использование этих директив php в пользовательском конфигурационном файле ".htaccess" становится возможным только при подключении PHP в качестве модуля и при наличии привилегий AllowOverride, которые должны быть определены либо в значение Options, либо в значение All для всего сервера или же для каждого хоста отдельно:

AllowOverride All
..............
 

Автор: Олег Головский


Добавить комментарий


Защитный код
Обновить

6 megabytes