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.Π€Π°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (php.ini) ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ PHP. ΠΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ PHP ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ»Ρ CGI- ΠΈ CLI-Π²Π΅ΡΡΠΈΠΈ PHP β ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅.
PHP ΠΈΡΡΡ ΡΠ°ΠΉΠ» php.ini Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ (ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΏΠΎΠΈΡΠΊΠ°):
PHPIniDir
Π² Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ΅ Apache 2, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ -c Π² CGI- ΠΈ CLI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅)
php.ini Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ PHP.
ΠΠΎΡΠ΅Π½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠ΅Π΅ΡΡΡΠ° ΠΠ‘ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΠ‘ ΠΈ PHP. ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ PHP
Π½Π° 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ ΠΠ‘ Windows ΠΈΠ»ΠΈ 64-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ PHP Π½Π° 64-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ Windows
PHP ΠΈΡΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π» ΡΠ΅Π΅ΡΡΡΠ° [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP],
ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ PHP Π½Π° 64-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ Windows β
ΡΠ°Π·Π΄Π΅Π» [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP].
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.
ΠΠ»Ρ 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].
PHP Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
php.ini, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ IniFilePath (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΠ‘ Windows).
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
ΠΈΠ»ΠΈ [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP], Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
IniFilePath (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Windows).
--with-config-file-path.
ΠΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΉΠ»Π° php.ini PHP Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ php-SAPI.ini, Π³Π΄Π΅ SAPI β ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ php-cli.ini ΠΈΠ»ΠΈ php-apache.ini, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» SAPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ SAPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ PHP ΡΠ·Π½Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ php_sapi_name().
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Apache ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ PHP ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ» php.ini ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
Π Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ php.ini ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ°ΡΠΈΠ½Π°Ρ PHP 8.3.0 Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΡΠ»Π°Π»ΠΈΡΡ Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ php.ini
; ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ PHP_MEMORY_LIMIT ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΈΠ· ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
memory_limit = ${PHP_MEMORY_LIMIT}
; Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΡΡΡΡΡ 30, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ PHP_MAX_EXECUTION_TIME Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ
max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ°ΠΉΠ»Π° 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 ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅.
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.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.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.