Fil-qosor: Il-php.ini hija l-fajl ċentrali tal-konfigurazzjoni ta' PHP. PHP taqrah meta tibda, ma' moduli tas-server darba, ma' CGI u CLI ma' kull sejħa. Minbarra dan hemm fajls addizzjonali minn direttorju tal-iskanjar, settings fil-pool ta' FPM jew f'Apache, .htaccess jew .user.ini u ini_set() fil-kodiċi. Liema livell jista' jibdel valur jiddeċiedi l-modalità tal-bidla tiegħu, pereżempju INI_SYSTEM jew INI_PERDIR. Valuri permezz ta' php_admin_value l-applikazzjoni ma tistax tissorpassahom aktar.
X'inhi l-php.ini?
Il-php.ini hija fajl tat-test b'entrati fuq il-mudell name = wert. Tistabbilixxi kif taġixxi PHP: kemm jista' jinqeda skrip bil-memorja, jekk l-iżbalji jidhrux fil-browser, kif jaħdmu s-sessjonijiet u liema estensjonijiet jitgħabbew. Kummenti jibdew b'punt u virgola.
Skont il-manwal ta' PHP, il-fajl jinqara meta tibda PHP. Ma' moduli tas-server bħal mod_php dan isir darba biss, meta jinbeda s-server tal-web, ma' CGI u CLI ma' kull sejħa. PHP-FPM taqra l-konfigurazzjoni tagħha meta tibda u meta s-servizz jerġa' jitgħabba. Tibdil mingħajr restart jew reload għalhekk normalment ma jaħdimx.
Minn PHP 8.3, skont il-manwal, entrata tista' tirreferi għal varjabbli tal-ambjent b'valur alternattiv:
memory_limit = ${PHP_MEMORY_LIMIT}
max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}
Fejn tfittex PHP il-php.ini?
Il-manwal jiddeskrivi ordni fissa. L-ewwel jgħodd mogħdija stabbilita espliċitament, pereżempju PHPIniDir f'Apache jew l-għażla -c ma' CGI u CLI. Inkella PHP tibni mogħdija tat-tiftix minn:
- il-varjabbli tal-ambjent
PHPRC, - taħt Windows, l-entrata tar-registry
IniFilePath, - id-direttorju tax-xogħol kurrenti, ħlief għal SAPIs li jitfuh, bħas-CLI,
- id-direttorju tal-fajl binarju ta' PHP jew tal-modulu,
- il-mogħdija stabbilita waqt il-kompilazzjoni
--with-config-file-path.
F'din il-mogħdija tat-tiftix PHP tfittex l-ewwel fajl php-SAPI.ini, pereżempju php-cli.ini, u biss wara php.ini. Imbagħad PHP taqra l-fajls .ini kollha mid-direttorju tal-iskanjar, stabbilit permezz ta' PHP_INI_SCAN_DIR jew waqt il-kompilazzjoni permezz ta' --with-config-file-scan-dir, f'ordni alfabetika. Liema fajls ġew mgħobbija juri php --ini jew il-funzjoni php_ini_scanned_files().
php --ini
php -r 'var_dump(php_ini_loaded_file(), php_ini_scanned_files());'
It-tnejn jagħtu l-istat tal-linja tal-kmand. Għall-websajt jista' japplika fajl ieħor, għax kull SAPI tista' jkollha l-konfigurazzjoni proprja tagħha; aktar dwar dan taħt SAPI spjegata.
Modalitajiet tal-bidla: min jista' jissettja liema valur?
Mhux kull setting jista' jiġi ssettjat kullimkien. Il-manwal jassenja lil kull direttiva modalità tal-bidla:
| Modalità | Fejn jista' jiġi ssettjat il-valur |
|---|---|
INI_USER |
fl-iskripts permezz ta' ini_set(), fir-registry ta' Windows u f'.user.ini |
INI_PERDIR |
f'php.ini, .htaccess, httpd.conf jew .user.ini |
INI_SYSTEM |
biss f'php.ini jew httpd.conf |
INI_ALL |
kullimkien |
Eżempji mill-manwal: memory_limit għandu l-modalità INI_ALL u l-istandard 128M, post_max_size għandu INI_PERDIR u l-istandard 8M, upload_max_filesize għandu INI_PERDIR u l-istandard 2M. expose_php jista' jkun biss fil-php.ini.
Fajls .user.ini jinqraw, skont il-manwal, biss mill-SAPIs CGI u FastCGI, jiġifieri wkoll minn PHP-FPM. PHP tfittixhom mid-direttorju tal-iskrip 'il fuq sad-Document Root u terġa' taqrahom, b'mod predefinit, l-iktar kull 300 sekonda (user_ini.cache_ttl). Taħt mod_php .htaccess jieħu dan ir-rwol.
Liema valur jgħodd fl-aħħar? Il-livelli fil-prijorità
B'mod simplifikat: aktar tard livell japplika, aktar il-valur tiegħu jirbaħ, sakemm il-modalità tal-bidla tippermettih.
- php.ini tas-SAPI rispettiva
- Fajls addizzjonali mid-direttorju tal-iskanjar, alfabetikament
- Konfigurazzjoni tas-server: pool ta' FPM b'
php_valuejewphp_admin_value, VirtualHost ta' Apache - Livell tad-direttorju:
.htaccessma' mod_php,.user.inima' FPM u CGI - Waqt it-tħaddim:
ini_set()fil-kodiċi tal-applikazzjoni
L-eċċezzjoni hija deċiżiva: valuri permezz ta' php_admin_value jew php_admin_flag ma jistgħux, skont il-manwal, jiġu sorpassati b'ini_set(). B'hekk l-amministraturi jsakkru settings rilevanti għas-sigurtà kontra l-applikazzjoni. Dan huwa deskritt fid-dettall taħt php_admin_value: ssakkru settings kontra s-sorpass.
Il-php.ini wara PHP2Shell: x'inbidel
Il-miżuri temporanji minn php.net dwar PHP2Shell huma kważi kollha settings INI: memory_limit=-1 imsakkar kontra s-sorpass, post_max_size limitat, session.upload_progress.enabled=0 u fuq PHP 8.5 fatal_error_backtraces=0. php.net jenfasizza li session.upload_progress.enabled m'għandux jiġi ssettjat permezz ta' ini_set() jew .user.ini, imma f'php.ini, pool ta' FPM jew konfigurazzjoni tas-server, segwit minn restart tal-workers kollha. Il-lista kompleta tinsab taħt Miżuri immedjati jekk għadkom ma tistgħux tippatchjaw.
Mal-verżjonijiet irranġati 8.5.12, 8.4.27, 8.3.36 u 8.2.35, skont il-manwal, inbidel ukoll memory_limit: issa huwa limitu artab. Is-setting il-ġdid memory_hard_limit_percent jistabbilixxi limitu iebes. Mingħajr valur proprju huwa d-doppju ta' memory_limit, meta dan ikun akbar minn 1G, il-valur flimkien ma' 1G. Jekk jinqabeż, il-proċess jintemm immedjatament b'exit status 137. Kif tagħżlu ż-żewġ limiti b'mod raġonevoli jispjega Kif tissettjaw memory_limit sew.
Skont il-manwal japplika: jekk verżjoni ta' PHP ma tagħrafx memory_hard_limit_percent, hija affettwata minn CVE-2026-109618 u CVE-2026-109619. Fid-distribuzzjonijiet b'backports, il-changelog tal-pakkett jipprova wkoll l-istat.
Kif jgħin PHP SOS konkretament?
- Niddeterminaw il-valuri effettivi: Naqraw għal kull SAPI liema fajls jitgħabbew u liema valur jgħodd fl-aħħar.
- Ninnaddfu l-livelli: Nneħħu entrati kontradittorji minn panels, pools,
.htaccessu.user.ini. - Nissakkru valuri: Fil-qafas tal-tisħiħ tas-server nistabbilixxu valuri rilevanti għas-sigurtà permezz ta'
php_admin_value. - Niddokumentaw: Niddokumentaw is-settings u r-restart, biex l-istat ikun jista' jiġi pprovat aktar tard.
Mistoqsijiet frekwenti
Fejn tinsab il-php.ini?
Dan jiddependi mis-sistema operattiva, mill-pakkett u mis-SAPI. Taħt Debian u Ubuntu hemm folders proprji għal kull verżjoni u SAPI, pereżempju /etc/php/8.3/fpm/php.ini u /etc/php/8.3/cli/php.ini. Fuq il-linja tal-kmand php --ini juri l-fajls mgħobbija, għall-websajt jgħin php_ini_loaded_file() f'fajl ta' verifika għal żmien qasir.
F'liema ordni jinqraw il-fajls fil-folder conf.d?
Skont il-manwal ta' PHP, PHP taqra l-fajls kollha bl-estensjoni .ini fid-direttorju tal-iskanjar f'ordni alfabetika. Fajls aktar tard jissorpassaw il-valuri ta' dawk ta' qabel. Għalhekk ħafna fajls għandhom numri bħal 20- jew 99- f'ismijiethom.
Għaliex it-tibdil tiegħi fil-php.ini ma jaħdimx?
Raġunijiet komuni: inbidel il-fajl ta' SAPI oħra, is-servizz ma reġax inbeda, valur fil-pool ta' FPM, fil-konfigurazzjoni ta' Apache jew f'.user.ini jissorpassah, jew panel tal-hosting jikteb mill-ġdid il-fajl mal-ewwel salvataġġ li jmiss.
X'inhu memory_hard_limit_percent?
Setting ġdid li, skont il-manwal ta' PHP, ġie introdott mal-verżjonijiet tas-sigurtà tal-21/10/2026. Jistabbilixxi limitu iebes tal-memorja bħala perċentwali ta' memory_limit. Il-manwal jindika li verżjoni ta' PHP li ma tafx dan is-setting hija affettwata mill-vulnerabbiltajiet ta' PHP2Shell.