Fil-qosor: memory_limit jiddetermina kemm jista' jokkupa mill-memorja talba waħda ta' PHP; l-istandard huwa 128M. Fl-operat normali ssettja valur finit li jaqbel mal-applikazzjoni u ibblokkah b'php_admin_value. Sakemm PHP2Shell ma jkunx ippatchjat, php.net jirrakkomanda temporanjament memory_limit=-1, mhux megħlub u kkombinat ma' limitu permezz ta' container jew cgroup, mhux permezz ta' RLIMIT_AS jew RLIMIT_DATA. Wara l-aġġornament terġa' tgħodd valur finit.
Issettjar ta' rutina li fl-għarrieda saret kwistjoni ta' sigurtà
Għal snin sħaħ memory_limit kien vit għall-iżviluppaturi. Jekk websajt tirrapporta „Allowed memory size exhausted”, il-valur jittella' u l-problema titqies solvuta. B'PHP2Shell sar suġġett ta' sigurtà, u r-rakkomandazzjoni ta' php.net tidher paradossali fl-ewwel ħarsa: għat-tranżizzjoni l-limitu tal-memorja ta' PHP innifsu għandu jitneħħa għal kollox.
L-isfond huwa CVE-2026-109618. Skont il-proġett PHP, stat ta' out-of-memory jista' jinterrompi PHP waqt li d-data tat-talba tkun inizjalizzata biss parzjalment. It-tindif tat-talba jista' mbagħad jittratta data invalida bħala valida. Dettalji tekniċi jinsabu taħt CVE-2026-109618, x'jiġri ġewwa PHP meta tonqos il-memorja jispjegah memory_limit u Out-of-Memory. Għall-operaturi tgħodd il-mistoqsija: liema valur japplika meta, u fejn irid jinsab?
X'jagħmel memory_limit fl-operat normali
Skont il-manwal ta' PHP, memory_limit jillimita l-memorja li skript jista' jokkupa u hekk jipproteġi s-server minn kodiċi miktub ħażin. L-istandard huwa 128M, -1 ifisser l-ebda limitu. Notazzjonijiet qosra bħal 256M jew 1G huma permessi.
Żewġ karatteristiċi huma importanti għas-sigurtà. L-ewwelnett, il-valur jista' jinbidel kullimkien, anke waqt it-tħaddim b'ini_set(). Ħafna CMS u ħwienet jgħollu huma stess, pereżempju għall-importazzjonijiet jew l-ipproċessar tal-immaġini. Min irid jimponi valur irid jissettjah b'php_admin_value; skont il-manwal valuri ssettjati hekk ma jistgħux jiġu megħlubin b'ini_set(). It-tieni, il-manwal jirrakkomanda li memory_limit ikun akbar minn post_max_size.
Liema valur jaqbel jiddependi mill-applikazzjoni. Ħarsa lejn il-log tal-iżbalji turi jekk jidhrux messaġġi dwar memorja eżawrita u f'liema sejħiet. Ippruvat tajjeb li l-valur jiġi ffissat għal kull websajt fil-pool FPM proprju tagħha: aktar ġeneruż għal ħanut b'importazzjonijiet, aktar skars għal websajt sempliċi ta' kumpanija. Valur għoli ħafna għal kulħadd jitlef l-effett protettiv, għax allura talba waħda difettuża jew abbużata tista' torbot ħafna memorja.
Minn PHP 8.5 hemm ukoll max_memory_limit. Dan l-issettjar jista' jiġi ffissat biss mal-bidu u jillimita sa fejn jista' jiġi ssettjat memory_limit. Valuri ogħla jitnaqqsu b'twissija. L-istandard -1 ifisser l-ebda limitu massimu.
memory_limit wara PHP2Shell: il-miżura tranżitorja ta' php.net
Għal servers li għadhom mhux aġġornati għal 8.5.12, 8.4.27, 8.3.36 jew 8.2.35 jew għal backport ikkonfermat, php.net jsemmi fl-avviż tas-sigurtà tal-21/10/2026 dawn il-passi. Inaqqsu r-riskju ta' mogħdijiet individwali ta' attakk, imma skont php.net ma jagħmlux installazzjoni sigura:
- Ssettja
memory_limit=-1, possibbilment b'mod li l-applikazzjonijiet ma jistgħux jegħlbu l-valur, pereżempju b'php_admin_valuefil-pool FPM jew fil-konfigurazzjoni ta' Apache. - Ivverifika li mkien ma jerġa' jiġi ssettjat limitu finit, la f'pool ieħor, la f'konfigurazzjoni ta' direttorju u lanqas fl-applikazzjoni.
- Ssettja limitu tal-memorja permezz ta' container jew cgroup, bħala protezzjoni tad-disponibbiltà, possibbilment b'mod li meta jinqabeż jitwaqqaf biss il-worker affettwat.
- Tużax
RLIMIT_ASjewRLIMIT_DATA. Skont php.net, dawn il-limiti jistgħu jattivaw eżattament l-iżball vulnerabbli fit-talba tal-memorja.
php.net jispjega f'dan il-kuntest li -1 ineħħi l-possibbiltà li jintlaħaq b'mod immirat il-limitu tal-memorja ta' PHP, imma żball tal-memorja f'livell aktar fil-fond xorta jista' jilħaq il-mogħdija vulnerabbli. Il-ħarsa ġenerali tal-miżuri tranżitorji kollha tinsab taħt Miżuri immedjati meta ma tistax tippatchja għadek.
; Pool FPM, pereżempju /etc/php/8.3/fpm/pool.d/www.conf (biss sal-aġġornament)
php_admin_value[memory_limit] = -1
# Fejn kullimkien huwa ssettjat memory_limit (qari biss)
grep -rn 'memory_limit' /etc/php/ /etc/apache2/ 2>/dev/null
grep -rn --include='*.php' -E "ini_set\s*\(\s*['\"]memory_limit" /var/www | head -20
grep -rn --include='.user.ini' 'memory_limit' /var/www
Kif tissettja l-limitu tas-cgroup għas-servizz FPM tiddeskrivih Issettja limiti tal-memorja b'systemd u cgroups. Mingħajr dan il-limitu estern talba waħda tista' ġġib is-server kollu f'nuqqas ta' memorja.
Wara kull bidla erġa' ibda l-workers kollha ta' PHP. Worker li jaħdem iżomm il-valuri qodma tiegħu.
X'jgħodd wara l-aġġornament
Bil-verżjonijiet rranġati, skont il-manwal ta' PHP, inbidlet ukoll l-imġiba ta' memory_limit. Minn 8.5.12, 8.4.27, 8.3.36 u 8.2.35 huwa limitu artab: talba tal-memorja li taqbeżu ġeneralment tista' tkompli tintemm qabel ma jiġi attivat l-iżball. Issettjar ġdid, memory_hard_limit_percent, jiffissa limitu iebes li qatt ma jinqabeż.
| Issettjar | Valur | Effett skont il-manwal |
|---|---|---|
memory_hard_limit_percent mhux issettjat jew -1 |
standard | limitu iebes darbtejn ogħla minn memory_limit sa 1G, aktar minn hekk memory_limit plus 1G |
memory_hard_limit_percent = 150 |
eżempju | b'memory_limit=128M limitu iebes ta' 192M |
memory_limit = -1 |
l-ebda limitu | allura m'hemm l-ebda limitu iebes |
Il-manwal isemmi punt prattiku ta' verifika: jekk memory_hard_limit_percent ma jiġix magħruf, il-verżjoni ta' PHP użata hija affettwata u trid tiġi aġġornata. Fil-każ ta' backports tad-distribuzzjonijiet ivverifika l-istat addizzjonalment permezz tal-changelog tal-pakkett.
# Il-binarju FPM jagħraf l-issettjar il-ġdid? (adatta n-numru tal-verżjoni)
php-fpm8.3 -i | grep -E 'memory_hard_limit_percent|memory_limit'
Wara l-aġġornament memory_limit=-1 temm l-iskop tiegħu. Irritorna għal valur finit li jaqbel mal-applikazzjoni u ibblokkah b'php_admin_value. Il-limitu tas-cgroup jista' jibqa' bħala saff addizzjonali ta' protezzjoni.
Kif tgħin PHP SOS b'mod konkret?
- Niddeterminaw fejn fuq is-server tiegħek huwa ssettjat u megħlub
memory_limit, inklużi l-applikazzjonijiet. - Nimplimentaw il-miżuri tranżitorji ta' php.net fil-post t-tajjeb u nżidu limitu tas-cgroup għas-servizz FPM.
- Permezz tas-Servizz ta' patch ta' PHP inġibu PHP għal stat rranġat u nerġgħu nibdew il-workers kollha.
- Wara nerġgħu nissettjaw valur finit xieraq u niddokumentaw l-issettjar.
Mistoqsijiet frekwenti
X'inhu l-valur standard ta' memory_limit?
Skont il-manwal ta' PHP 128M. Il-valur jillimita kemm jista' jokkupa skript wieħed mill-memorja. Jista' jinbidel fil-php.ini, fil-konfigurazzjoni tas-server, fil-pool FPM u waqt it-tħaddim b'ini_set(), basta ma jkunx imblukkat b'php_admin_value.
Għaliex php.net jirrakkomanda memory_limit=-1 f'PHP2Shell?
Waħda mill-vulnerabbiltajiet, CVE-2026-109618, hija relatata mal-istat meta tonqos il-memorja. Skont php.net memory_limit=-1 ineħħi l-possibbiltà li jintlaħaq b'mod immirat il-limitu tal-memorja ta' PHP, imma mhux kull żball tal-memorja. Il-miżura mhijiex protezzjoni sħiħa u trid tiġi kkombinata ma' limitu tal-memorja permezz ta' container jew cgroup.
Nista' minflok nissettja l-limitu b'ulimit?
Le. php.net jiskoraġġixxi b'mod espliċitu l-użu ta' RLIMIT_AS jew RLIMIT_DATA bħala sostitut, għax dawn il-limiti jistgħu jattivaw eżattament l-iżball vulnerabbli fit-talba tal-memorja. Jirrakkomanda limitu permezz ta' container jew cgroup.
X'jgħodd wara l-aġġornament għal verżjoni rranġata ta' PHP?
Skont il-manwal, fil-verżjonijiet rranġati memory_limit huwa limitu artab, kkomplementat minn limitu iebes permezz ta' memory_hard_limit_percent. Il-miżura tranżitorja b'-1 imbagħad temmet l-iskop tagħha, u valur finit li jaqbel mal-applikazzjoni għandu jerġa' jgħodd.