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

Запуск PHP как модуля Apache

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

Есть несколько директив Apache, которые позволяют вам изменить конфигурацию PHP посредством файлов конфигурации Apache. Директивы для PHP_INI_ALL, PHP_INI_PERDIR, и PHP_INI_SYSTEM, вы можете увидеть в приложении Список директив php.ini

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().

Пример #1 Пример конфигурации Apache

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>

Предостережение

PHP константы не доступны вне PHP. К примеру, в httpd.conf вы не можете использовать константы PHP такие как E_ALL или E_NOTICE чтобы установить директиву error_reporting, так как они не будут иметь значения и будут приравниваться к 0. Используйте вместо этого соответствующие значения типа bitmask (битовая маска). Эти константы могут быть использованы в php.ini

Изменение конфигурации PHP через реестр Windows

При использовании PHP в Windows значения конфигурации могут быть изменены на уровне директории посредством реестра Windows. Значения конфигурации хранятся в ключе реестра HKLM\SOFTWARE\PHP\Per Directory Values, в под-ключах, включающих полный путь. К примеру, значения конфигурации для директории c:\inetpub\wwwroot могут храниться в ключе HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. Настройки для директории будут действительны для любых скриптов запущенных из этой директории или её поддиректории. Значения ключа должны иметь название конфигурационной директивы PHP и строковое значение. PHP константы в значениях игнорируются. Однако, только значения конфигурации изменяемые в PHP_INI_USER могут быть установлены таким образом, значения же PHP_INI_PERDIR не могут.

Другие интерфейсы в PHP

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

Если вам интересен полный список конфигурационных настроек вашей системы с текущими значениями, то вы можете запустить phpinfo() функцию, и получить результирующую страницу. Вы также можете получить доступ к значениям индивидуально сконфигурированных директив в процессе выполнения, используя ini_get() или get_cfg_var().

Коментарии

Being able to put php directives in httpd.conf and have them work on a per-directory or per-vitual host basis is just great. Now there's another aspect which might be worth being aware of:

A php.ini directive put into your apache conf file applies to php when it runs as an apache module (i.e. in a web page), but NOT when it runs as CLI (command-line interface).

Such feature that might be unwanted by an unhappy few, but I guess most will find it useful. As far as I'm concerned, I'm really happy that I can use open_basedir in my httpd.conf file, and it restricts the access of web users and sub-admins  of my domain, but it does NOT restrict my own command-line php scripts...
2008-02-02 07:25:38
http://php5.kiev.ua/manual/ru/configuration.changes.html
Note that, changing the PHP configuration via the windows registry will set the new values using php_admin_value. This makes that you cannot override them on runtime.

So for example, if you set the include_path on the windows registry and then you call the set_include_path function in your application, it will return false and won't change the include_path.
2009-06-14 21:07:24
http://php5.kiev.ua/manual/ru/configuration.changes.html

    Поддержать сайт на родительском проекте КГБ