Файл конфігурації
Файл конфігурації (php.ini) зчитується під час запуску PHP. Для версій серверних модулів PHP це відбувається лише один раз під час запуску веб-сервера. Для CGI та CLI версій це відбувається під час кожного виклику.
Пошук php.ini провадиться в наступних місцях (по порядку пошуку):
- За місцем розташування модуля SAPI (
PHPIniDir
директива Apache 2,-c
параметр командного рядка CGI та CLI) - Змінне середовище PHPRC.
- Розташування файлу
php.ini
може бути вказано до різних версій PHP. Кореневий ключ реєстру залежить від розрядності операційної системи та встановлення PHP. Для 32-розрядного PHP на 32-розрядному Windows або 64-розрядному PHP та 64-розрядному Windows використовуйте[(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
. Для 32-розрядного PHP на 64-розрядному Windows[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 мають на увазі major, minor і release версії PHP. Для 32-розрядного PHP на 64-розрядному Windows ключі реєстру будуть іншими:[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]
и[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]
. Якщо також є значенняIniFilePath
у будь-якому з цих ключів, то місцезнаходженняphp.ini
буде визначено першим ключем по порядку (тільки для Windows). [HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
или[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
, значениеIniFilePath
(лише для Windows).- Поточна директорія (за винятком CLI).
- Директорія веб-сервера (для модулів SAPI) або директорія PHP (інакше Windows).
- У директорії Windows (C:\windows або C:\winnt) (для Windows) або
--with-config-file-path
з вибором під час компіляції.
Якщо файл php-SAPI.ini існує, де SAPI - це поточний інтерфейс, наприклад php-cli.ini або php-apache.ini, він буде обраний замість файлу php.ini. Назву SAPI-інтерфейсу між веб-сервером і PHP можна дізнатися через функцію php_sapi_name()
Зауваження :
Веб-сервер Apache змінює поточну директорію на кореневу під час запуску, внаслідок чого PHP зчитує php.ini з кореневої файлової системи, якщо файл існує.
У файлі php.ini можна вказувати змінні оточення, як показано нижче.
Приклад #1 Змінні оточення у файлі php.ini
; PHP_MEMORY_LIMIT взята зі змінних оточення memory_limit = ${PHP_MEMORY_LIMIT}
Директиви файлу php.ini, що обробляються модулями, описані на сторінках модулів. Список директив ядра наведено у додатку « Директиви php.ini ». Не всі директиви PHP документовані у цьому посібнику: повний список доступних у встановленій версії PHP директив викладено у докладних коментарях у файлі php.ini. Як альтернатива, »остання версія 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 как конфигурационные.