Як змінити параметри конфігурації

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

Коли використовується PHP як модуль Apache, ви можете також змінити параметри конфігурації використовуючи директиви файлів конфігурації Apache (напр. httpd.conf та .htaccess). Вам також потрібні "AllowOverride Options" або "AllowOverride All" привілеї, щоб зробити це.

Існує кілька директив Apache, які дозволяють вам змінити PHP-конфігурацію через конфігураційні файли Apache. Щоб проглянути співставлення між цими директивами та режимами INI_ALL, INI_PERDIR, або INI_SYSTEM, прогляньте додаток Список директив php.ini.

php_value name value

Встановлює значення вказаної директиви. Може використовуватись тільки з типами директив INI_ALL та INI_PERDIR. Щоб очистити попереднє значення, використовуйте none як значення.

Зауваження: Не використовуйте php_value для встановлення логічного (boolean) значення. Замість цього використовуйте php_flag (див. нижче).

php_flag name on|off

Використовується для встановлення логічного значення для директив. Може використовуватись тільки з типами директив INI_ALL та 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-конфігурації та мати рядковий тип (string). Константи PHP в середині ключів реєстра не парсяться. Хоча, тільки значення конфігурації, що змінюються в INI_USER, можуть бути встановленими таким чином, тоді як значеня для INI_PERDIR - не можуть.

Інші інтерфейси для PHP

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

Якщо ви хочете побачити повний список та значення параметрів конфігурації у вашій системі, можна ознайомитись з виводом функції phpinfo(). Також можна отримати значення конкретної директиви під час виконання за допомогою функції ini_get() або get_cfg_var().

add a note add a note

User Contributed Notes 4 notes

up
8
contrees.du.reve at gmail dot com
14 years ago
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...
up
-1
EdindAsd
1 year ago
cialis viagra <a href="https://viaedpik.com/">natural alternative to viagra</a> nitroglycerin and viagra <a href=https://viaedpik.com/>viagra online generic</a> ’
up
-1
alishAni
1 year ago
drugs from canada to usa <a href="https://inpharmxx.com/">Femara</a> canadian vet pharmacy online <a href=https://inpharmxx.com/>prednisone canadian pharmacy</a> ’
up
-19
self at pabloviquez dot com
13 years ago
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.
To Top