Как изменить конфигурацию

При использовании PHP, как модуля Apache

При использовании модуля Apache можно изменить настройки с помощью директив файлов конфигурации Apache httpd.conf) и .htaccess (для этого понадобятся привилегии "AllowOverride Options" или "AllowOverride All").

В PHP 3.0 были директивы Apache, связанные с соответствующими директивами php3.ini, с единственным различием в том, что у них был префикс "php3_".

В PHP 4.0 есть несколько директив Apache, которые позволяют вам менять конфигурацию PHP из файлов конфигурации Apache.

php_value имя значение

Устанавливает значение указанной директивы. Может быть использована только для директив типа PHP_INI_ALL и PHP_INI_PERDIR. Для очистки значения задайте none.

php_value auto_prepend_file none

php_flag имя on|off

Используется для установки значений логических директив. Также может быть использована только с типами PHP_INI_ALL и PHP_INI_PERDIR type directives.

php_admin_value имя значение

Устанавливает значение указанной директивы. Эта директива НЕ МОЖЕТ быть использована в файлах .htaccess. Любая директива, заданная с помощью php_admin_value, не может быть переопределена в файлах .htaccess.

php_admin_flag имя on|off

Устанавливает значение указанной логической директивы. Эта директива НЕ МОЖЕТ быть использована в файлах .htaccess. Любая директива, заданная с помощью php_admin_flag, не может быть переопределена в файлах .htaccess.

Пример 4-2. Пример конфигурации Apache

<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode on
</IfModule>

Замечание: Константы PHP не определены вне PHP. К примеру, в файле httpd.conf нельзя использовать константы PHP, такие, как E_ALL или E_NOTICE, поскольку они не будут иметь значения и будут восприняты, как 0. Вместо констант придется использовать соответствующие значения.

При использовании других интерфейсов PHP

Независимо от интерфейса PHP, можно изменить некоторые значения прямо во время выполнения программы командой ini_set(). Следующая таблица показывает уровни изменения значений директивы:

Таблица 4-1. Определение констант PHP_INI_*

КонстантаЗначениеУровень
PHP_INI_USER1Значение может изменяться в программе пользователя
PHP_INI_PERDIR2 Значение может быть задано в php.ini, .htaccess или httpd.conf
PHP_INI_SYSTEM4 Значение может быть задано в php.ini или httpd.conf
PHP_INI_ALL7Значение может задаваться где угодно

Значения конфигурационных директив можно посмотреть в выводе функции phpinfo(). Также можно получит доступ к данным значениям с использованием ini_get() или get_cfg_var().