Файл конфігурації (php.ini) читається під час запуску PHP. Для версії PHP, яка запускається як модуль, це відбувається тільки під час старту веб-сервера. Для випадку, коли PHP використовується як CGI або як CLI, це відбувається під час кожного запуску.
php.ini шукається в наступних розташуваннях (за таким порядком):
PHPIniDir
в Apache 2, параметром -c
в командному рядку в CGI та CLI).
php.ini
можна визначати для кожної
версії PHP окремо. Корінь ключів регістру залежить від розрядності ОС та
PHP. Для 32-бітного PHP у 32-бітній ОС чи 64-бітного PHP у 64-бітній ОС
використовується [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
,
натомість для 32-бітних версій PHP у 64-бітній ОС використовується
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
].
Коли розрядність співпадає, ключі регістру обробляються в такому порядку:
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]
,
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]
та
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]
, де x, y та z
означають мажорні, мінорні та патч- випуски. Для 32-бітних версій PHP на
64-бітних ОС ключі регістру обробляються в такому порядку:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]
,
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]
та
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]
, де
x, y та z означають мажорні, мінорні та патч- випуски. Якщо значення для
IniFilePath
знаходиться в будь-якому з цих ключів, воно
буде використовуватись як розташування файла
php.ini
(тільки у Windows).
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
або
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
, значення
IniFilePath
(тільки у Windows).
--with-config-file-path
під час компіляції.
Якщо php-SAPI.ini існує (де SAPI означає - SAPI, що використовується, наприклад, php-cli.ini або php-apache.ini), його буде використано замість php.ini. Назву SAPI можна знайти використовуючи функцію php_sapi_name().
Зауваження:
Веб-сервер Apache змінює теку на кореневу на старті, в результаті чого PHP читає файл php.ini з кореневої теки, якщо він там існує.
Змінні оточення можна використовувати в php.ini як показано нижче.
Приклад #1 Використання Змінних Оточення в php.ini
; PHP_MEMORY_LIMIT бере значення із оточення memory_limit = ${PHP_MEMORY_LIMIT}
Директиви php.ini, що обробляються через розширення, мають опис на відповідних сторінках розширень. Список директив ядра знаходиться в додатку. Не всі PHP-директиви описані в цьому посібнику: повний їх список можна знайти в коментарях файлу php.ini вашої версії PHP. Окрім цього, можна прочитати » останню версію файлу php.ini зі сховища Git.
Приклад #2 Частина вмісту з файлу php.ini
; будь-який текст після символів крапки-з-комою (;) ігнорується [php] ; маркери розділів (текст вередині квадратних дужок) також ігнорується ; Логічні значення можуть встановлюватись такими записами: ; true, on, yes ; або false, off, no, none register_globals = off track_errors = yes ; рядок можна взяти в подвійні дужки include_path = ".:/usr/local/lib/php" ; зворотні слеші сприймаються точно так як і інші символи include_path = ".;c:\php\lib"
Дозволено посилатись на наявні змінні .ini з середини файлу .ini. Наприклад:
open_basedir = ${open_basedir}
":/new/dir"
.
Дозволено налаштувати PHP для пошуку файлів .ini в теці вже після обробки php.ini. Для цього, під час компіляції, вказується опція --with-config-file-scan-dir. Цільову теку можна перепризначити у ході виконання коду, задавши потрібне значення змінній середовища PHP_INI_SCAN_DIR.
Для пошуку в різних теках треба відокремити їх роздільником шляхів
(;
у Windows, NetWare та RISC OS; :
на всіх інших платформах; значення, що використовує PHP, доступне як
константа PATH_SEPARATOR
). Якщо в
PHP_INI_SCAN_DIR вказано порожню теку, PHP виконає пошук
в теці, заданій під час компіляції опцією
--with-config-file-scan-dir.
В кожній теці PHP буде вибирати всі файли з закінченням
.ini
у алфавітному порядку. Список оброблених файлів та
їхній порядок повертає php_ini_scanned_files(), або PHP,
запущений з опцією --ini.
Припускається, що PHP налаштовано з --with-config-file-scan-dir=/etc/php.d, а роздільник — :... $ php PHP обробить всі файли /etc/php.d/*.ini як файли конфігурації. $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php PHP обробить всі файли /usr/local/etc/php.d/*.ini як файли конфігурації. $ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php PHP обробить всі файли /etc/php.d/*.ini, потім /usr/local/etc/php.d/*.ini як файли конфігурації. $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php PHP обробить всі файли /usr/local/etc/php.d/*.ini, потім /etc/php.d/*.ini як файли конфігурації.