Файл конфигурации
Файл конфигурации (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.
Тип интерфейса между веб-сервером и PHP может быть определён с помощью функции php_sapi_name().
Замечание:
Веб-сервер Apache изменяет текущую директорию на корневую при запуске, в
результате чего PHP считывает php.ini из корневой файловой системы, если файл существует.
В php.ini можно использовать переменные окружения, как показано ниже.
Пример #1 Переменные окружения php.ini
; PHP_MEMORY_LIMIT взята из переменных окружения
memory_limit = ${PHP_MEMORY_LIMIT}
Директивы 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.