PHP.mk документација

Конфигурациската датотека

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

configuration.file.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека configuration.file.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Конфигурациската датотека

Референца за `configuration.file.php` со подобрена типографија и навигација.

configuration.file.php

Конфигурациската датотека

The configuration file (php.iniКонфигурациската датотека ( CGI and CLI ) се чита кога PHP започнува. За верзиите на PHP како модул на серверот, ова се случува само еднаш кога ќе се стартува веб-серверот. За

php.ini верзии, ова се случува при секоја инвокација.

  • се бара на следниве локации (по редослед):PHPIniDir специфична локација на SAPI модулот ( -c директива во Apache 2,
  • На PHPRC променливата на околината.
  • опција на командната линија во CGI и CLI) php.ini Локацијата на [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP] датотеката може да се постави за различни верзии на PHP. Коренот на регистарските клучеви зависи од 32- или 64-битната верзија на инсталираниот ОС и PHP. За 32-битен PHP на 32-битен ОС или 64-битен PHP на 64-битен ОС користете [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]за 32-битна верзија на PHP на 64-битен ОС користете [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] and [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]] наместо тоа. За инсталација со иста битност, следните регистарски клучеви се испитуваат по редослед: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] and [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x], каде што x, y и z значат главната, помалата и верзијата на изданието на PHP. За 32-битни верзии на PHP на 64-битен ОС, следните регистарски клучеви се испитуваат по редослед: IniFilePath , каде што x, y и z значат главната, помалата и верзијата на изданието на PHP. Ако постои вредност за php.ini во некој од овие клучеви, првата пронајдена ќе се користи како локација на
  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] or [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] (само за Windows). IniFilePath во некој од овие клучеви, првата пронајдена ќе се користи како локација на
  • , вредност на
  • Тековна работна директориум (освен CLI).
  • Директориум на веб-серверот (за SAPI модули), или директориум на PHP (инаку во Windows).C:\windows or C:\winntWindows директориум ( --with-config-file-path опција за време на компајлирање.

Враќа php-SAPI.ini постои (каде што SAPI е употребениот SAPI, така што, на пример, php-cli.ini or php-apache.ini), се користи наместо php.ini. Името на SAPI може да се одреди со php_sapi_name().

Забелешка:

Веб-серверот Apache го менува директориумот на root при стартување, предизвикувајќи PHP да се обиде да чита php.ini од root-овиот датотечен систем ако постои.

Променливите на околината може да се повикуваат во вредностите на конфигурацијата во php.ini како што е прикажано подолу. Од PHP 8.3.0, може да се специфицира резервна вредност што ќе се користи кога референцираната променлива не е дефинирана.

Пример #1 php.ini Променливи на околината

; PHP_MEMORY_LIMIT is taken from environment
memory_limit = ${PHP_MEMORY_LIMIT}
; If PHP_MAX_EXECUTION_TIME is not defined, it will fall back to 30
max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}

На php.ini директивите обработени од екстензиите се документирани на соодветните страници на самите екстензии. А листа на основните директиви е достапна во прилогот. Не сите PHP директиви се нужно документирани во овој прирачник: за целосна листа на директиви достапни во вашата верзија на PHP, ве молиме прочитајте го вашиот добро коментиран php.ini датотека. Алтернативно, може да најдете » најновите php.ini од Git исто така корисни.

Пример #2 php.ini example

; any text on a line after an unquoted semicolon (;) is ignored
[php] ; section markers (text within square brackets) are also ignored
; Boolean values can be set to either:
;    true, on, yes
; or false, off, no, none
register_globals = off
track_errors = yes

; you can enclose strings in double-quotes
include_path = ".:/usr/local/lib/php"

; backslashes are treated the same as any other character
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; PATH_SEPARATOR на сите други платформи; вредноста што ја користи PHP е достапна како PHP_INI_SCAN_DIRконстанта). Ако е даден празен директориум во --with-config-file-scan-dir.

, PHP исто така ќе го скенира директориумот даден при компилација преку .ini Во секој директориум, PHP ќе ги скенира сите датотеки што завршуваат на php_ini_scanned_files()по азбучен ред. Список на датотеките што беа вчитани, и по кој редослед, е достапен со повикување --ini option.

Assuming PHP is configured with --with-config-file-scan-dir=/etc/php.d,
and that the path separator is :...

$ php
  PHP will load all files in /etc/php.d/*.ini as configuration files.

$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php
  PHP will load all files in /usr/local/etc/php.d/*.ini as
  configuration files.

$ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php
  PHP will load all files in /etc/php.d/*.ini, then
  /usr/local/etc/php.d/*.ini as configuration files.

$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php
  PHP will load all files in /usr/local/etc/php.d/*.ini, then
  /etc/php.d/*.ini as configuration files.

Белешки од корисници 3 белешки

weili
пред 4 години
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.
— Генерира ентропија преку RAND_poll() на OpenSSL
Nimja
It is worth noting that  $PHP_INI_SCAN_DIR is **not** recursive, which offers flexibility in organizing configuration in base-environment fashion:

$ mkdir -p /tmp/php_conf/prod /tmp/php_conf/dev 
$ touch /tmp/php_conf/php.base.ini /tmp/php_conf/prod/php.ini /tmp/php_conf/dev/php.ini
$ export PHP_INI_SCAN_DIR="/tmp/php_conf:/tmp/php_conf/dev"
$ php --ini
//...
Scan for additional .ini files in: /tmp/php_conf:/tmp/php_conf/dev
Additional .ini files parsed:      /tmp/php_conf/php.base.ini,
/tmp/php_conf/dev/php.ini

Such behavior can be used with docker where whole a subtree of configs is mounted into a dev-container, with ability to control which set of files is loaded using an environment variable.
, или со стартување на PHP со
пред 2 години
Notice that `error_reporting` CANNOT be interpolated with an environment variable (e.g. `error_reporting = ${PHP_ERROR_REPORTING}`).

`error_reporting` is treated differently than other directives:
if assigned an environment variable, this will be silently ignored and replaced with value `0` (aka no-reporting).

I couldn't find documentation about it.
Is maybe an info that should be added in https://github.com/php/php-src/blob/8f5156fcba9906664ecd97e4c279ee980e522121/php.ini-production#L451-L500 ?

I am not aware if this specific behavior affects only `error_reporting` or also other directive.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.