Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (php.ini) считываСтся ΠΏΡ€ΠΈ запускС PHP. Для вСрсий сСрвСрных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ PHP это происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС Π²Π΅Π±-сСрвСра. Для CGI- ΠΈ CLI-вСрсии PHP β€” ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅.

PHP ΠΈΡ‰Ρ‘Ρ‚ Ρ„Π°ΠΉΠ» php.ini Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… мСстах (ΠΏΠΎ порядку поиска):

  • По Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ SAPI-модуля (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° PHPIniDir Π² Π²Π΅Π±-сСрвСрС Apache 2, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки -c Π² CGI- ΠΈ CLI-интСрфСйсС)
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ окруТСния PHPRC.
  • РасполоТСниС Ρ„Π°ΠΉΠ»Π° 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).
  • ВСкущая рабочая дирСктория (ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ CLI-интСрфСйс).
  • ДирСктория Π²Π΅Π±-сСрвСра (для SAPI-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ) ΠΈΠ»ΠΈ дирСктория PHP (ΠΈΠ½Π°Ρ‡Π΅ Π² Windows).
  • ДирСктория ОБ Windows (C:\windows ΠΈΠ»ΠΈ C:\winnt) (для 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 ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅.
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 3 notes

up
22
weili ΒΆ
4 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.
up
3
grzegorz129 at gmail dot com ΒΆ
11 months ago
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.
up
5
Pictor13 ΒΆ
2 years ago
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.