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

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

php.ini шукається в наступних місцерозташуваннях (за таким порядком):

  • Спеціальне розташування модуля SAPI (визначається директивою PHPIniDir в Apache 2, параметром -c в командному рядку в CGI та CLI, параметром php_ini в NSAPI, змінною оточення PHP_INI_PATH в THTTPD)
  • Змінна оточення PHPRC. Перед PHP 5.2.0, вона перевірялась після пошуку в ключі реєстра, що згадується нижче.
  • Починаючи з PHP 5.2.0, розташування файла php.ini можна вказувати для різних версій 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 означають цифри версії PHP. Якщо значення для IniFilePath знаходиться в будь-якому з цих ключів, воно буде використовуватись як місцерозташування файла php.ini (Тільки у Windows).
  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP], значення IniFilePath (Тільки у Windows).
  • Поточна робоча директорія (за виключенням CLI).
  • Директорія веб-сервера (для модуля SAPI), або директорія PHP (в противному разі - директорія Windows).
  • Директорія Windows (C:\windows або C:\winnt) (для 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"

Починаючи з PHP 5.1.0, є можливість посилатись на існуючі змінні .ini з середини файла .ini. Наприклад: open_basedir = ${open_basedir} ":/new/dir".

add a note add a note

User Contributed Notes 2 notes

up
4
ohcc at 163 dot com
7 years ago
in php.ini you can reference to an existing directive or an environment variable using the syntax ${varname}.

Here are some examples.

sys_temp_dir = "${WINDIR}"

--- ${WINDIR} will be replaced by $_ENV['WINDIR'] at runtime

--- you can set environment variables by Apache and use them in php.ini
--- FcgidInitialEnv AUTHOR "WUXIANCHENG"
--- error_log = "${AUTHOR}.log"

error_log = "${sys_temp_dir}"

--- ${sys_temp_dir} will be replace by the value of sys_temp_dir

Also you can use PHP constants in php.ini, but DONT'T wrap them in ${} or "".

error_log = "/data/"PHP_VERSION"/"

---  it works like this php code:

$error_log =  "/data/" . PHP_VERSION . "/";
up
1
weili
2 years ago
For someone who's also wondering.

PHP can work even if there is no configuration file(php.ini) loaded,
it will simply applies the default values to directives.
To Top