Конфигурация времени исполнения
PHP Manual

Файл конфигурации

Файл конфигурации (php.ini) считывается при запуске PHP. Для версий серверных модулей PHP это происходит только один раз при запуске веб сервера. Для CGI и CLI версий это происходит при каждом вызове.

Поиск php.ini производится в следующих местах (по порядку поиска):

Если файл 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 Environment Variables

; 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"

С версии PHP 5.1.0 стало возможным обращаться к существующим ini-переменным из ini-файлов. Пример: open_basedir = ${open_basedir} ":/new/dir".

Сканирование директорий

Существует возможность сконфигурировать PHP для сканирования директорий в поисках .ini-файлов после считывания php.ini. Это можно сделать на моменте компиляции, указав опцию --with-config-file-scan-dir . В PHP 5.2.0 и выше, сканирование директорий может быть переопределено во время исполнения установкой переменной среды 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 как конфигурационные.

Список изменений

Версия Описание
7.0.0 Символ "решетка" (#) больше не используется для комментариев.
5.3.0 Символ "решетка" (#) больше не должен используется для комментариев и вызовет предупреждение, в случае использования.
5.2.0 Переменная окружения PHP_INI_SCAN_DIR может быть установлена для переопределения набора сканируемых директорий.
5.1.0 Можно ссылаться на существующие ini-переменные из ini-файлов.


Конфигурация времени исполнения
PHP Manual