Go achomair: Socraíonn memory_limit cé mhéad cuimhne a fhéadann iarratas PHP aonair a áitiú; is é 128M an réamhshocrú. Sa ghnáthoibriú socraíonn tú luach críochta a oireann don fheidhmchlár agus cuireann tú faoi ghlas é le php_admin_value. Fad nach bhfuil PHP2Shell paistithe, molann php.net go sealadach memory_limit=-1, nach féidir a scríobh os a chionn agus comhcheangailte le teorainn trí choimeádán nó cgroup, ní trí RLIMIT_AS ná RLIMIT_DATA. Tar éis an nuashonraithe tá luach críochta i bhfeidhm arís.
Socrú gnáth atá go tobann ina ábhar slándála
Ar feadh blianta bhí memory_limit ina scriú cumraíochta d'fhorbróirí. Má thuairiscíonn suíomh gréasáin “Allowed memory size exhausted”, méadaítear an luach, agus tá an fhadhb réitithe. Le PHP2Shell is ceist slándála é anois, agus is cosúil go bhfuil moladh php.net paradoxúil ar an gcéad amharc: don idirthréimhse ba cheart teorainn chuimhne PHP féin a bhaint ar fad.
Is é CVE-2026-109618 an cúlra. De réir thionscadal PHP, is féidir le staid as-chuimhne PHP a idirbhriseadh agus sonraí iarratais á dtosú go páirteach amháin. Is féidir leis an nglanadh iarratais sonraí neamhbhailí a láimhseáil mar bhailí ansin. Tá mionsonraí teicniúla ag CVE-2026-109618; míníonn memory_limit agus as-chuimhne cad a tharlaíonn laistigh de PHP nuair a bhíonn easpa cuimhne ann. Don oibritheoir is í seo an cheist: cén luach atá i bhfeidhm cathain, agus cá gcaithfidh sé a bheith?
An méid a dhéanann memory_limit sa ghnáthoibriú
De réir lámhleabhar PHP, cuireann memory_limit teorainn leis an gcuimhne a fhéadann script a áitiú agus cosnaíonn sé an freastalaí ar chód droch-scríofa. Is é 128M an réamhshocrú, ciallaíonn -1 nach bhfuil aon teorainn ann. Is incheadaithe nodaireacht ghearr ar nós 256M nó 1G.
Tá dhá airí tábhachtach don tslándáil. Ar an gcéad dul síos, is féidir an luach a athrú i ngach áit, ag am rite le ini_set() freisin. Méadaíonn go leor CMS agus siopaí é iad féin, mar shampla le haghaidh allmhairithe nó próiseála íomhá. An té ar mhaith leis luach a fhorfheidhmiú, caithfidh sé é a shocrú le php_admin_value; de réir an lámhleabhair ní féidir luachanna a socraíodh ar an mbealach sin a scríobh os a gcionn le ini_set(). Ar an dara dul síos, molann an lámhleabhar go mbeadh memory_limit níos mó ná post_max_size.
Braitheann an luach a oireann ar an bhfeidhmchlár. Léiríonn sracfhéachaint ar log na n-earráidí an dtarlaíonn teachtaireachtaí faoi chuimhne ídithe agus ag cé na glaonna. Tá sé deimhnithe go n-oibríonn sé go maith an luach a shocrú do gach suíomh gréasáin ina linn FPM féin: níos flaithiúla do shiopa le hallmhairithe, níos teanntaithe do shuíomh cuideachta simplí. Caillfidh luach an-ard do gach suíomh gréasáin ar an mbonn ginearálta an éifeacht chosanta, mar go bhféadfadh iarratas lochtach amháin nó iarratas mí-úsáidte a lán cuimhne a cheangal.
Ó PHP 8.5 i leith tá max_memory_limit ann freisin. Ní féidir an socrú seo a shocrú ach ag tosú agus cuireann sé teorainn leis an airde ar féidir memory_limit a shocrú. Gearrtar luachanna níos airde le rabhadh. Ciallaíonn an réamhshocrú -1 nach bhfuil uasteorainn ann.
memory_limit tar éis PHP2Shell: an beart idirthréimhseach ó php.net
I gcás freastalaithe nach bhfuil nuashonraithe go 8.5.12, 8.4.27, 8.3.36 nó 8.2.35 nó backport deimhnithe fós, luann php.net sa fhógra slándála an 21 Deireadh Fómhair 2026 na céimeanna seo a leanas. Laghdaíonn siad riosca bealaí ionsaithe aonair, ach de réir php.net ní dhéanann siad suiteáil slán:
memory_limit=-1a shocrú, más féidir ar bhealach nach féidir le feidhmchláir an luach a scríobh os a chionn, mar shampla lephp_admin_valuesa linn FPM nó i gcumraíocht Apache.- A sheiceáil nach socraítear teorainn chríochta in áit ar bith arís, ní i linn eile, ní i gcumraíocht eolaire agus ní san fheidhmchlár.
- Teorainn chuimhne a shocrú trí choimeádán nó cgroup, mar chosaint ar infhaighteacht, más féidir ar bhealach nach gcuirtear deireadh ach leis an worker lena mbaineann nuair a sháraítear í.
- Gan
RLIMIT_ASnáRLIMIT_DATAa úsáid. De réir php.net, is féidir leis na teorainneacha seo an earráid leochaileach a spreagadh go díreach agus cuimhne á hiarraidh.
Míníonn php.net dá bhrí sin go mbaineann -1 an teacht spriocdhírithe ar theorainn chuimhne PHP, ach go bhféadfadh earráid chuimhne ar leibhéal níos doimhne an cosán leochaileach a bhaint amach fós. Tá forbhreathnú ar na bearta idirthréimhseacha go léir ag Gníomhartha láithreacha mura féidir leat paistiú fós.
; Linn FPM, m.sh. /etc/php/8.3/fpm/pool.d/www.conf (go dtí an nuashonrú amháin)
php_admin_value[memory_limit] = -1
# Cá bhfuil memory_limit socraithe ar fad (i modh léite amháin)
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
Conas a shocraíonn tú an teorainn cgroup don tseirbhís FPM, déanann Teorainneacha cuimhne a shocrú le systemd agus cgroups cur síos air. Gan an teorainn sheachtrach seo is féidir le hiarratas aonair an freastalaí ar fad a chur i bhfaitíos cuimhne.
Tar éis gach athraithe, atosaigh gach worker PHP. Coinníonn worker atá ag rith a sheanluachanna.
Cad atá i bhfeidhm tar éis an nuashonraithe
Leis na leaganacha ceartaithe d'athraigh iompar memory_limit freisin de réir lámhleabhar PHP. Ó 8.5.12, 8.4.27, 8.3.36 agus 8.2.35 is teorainn bhog é: is féidir iarratas cuimhne a sháraíonn í a chríochnú fós sa chuid is mó de na cásanna sular spreagtar an earráid. Socraíonn socrú nua, memory_hard_limit_percent, teorainn chrua nach sáraítear riamh.
| Socrú | Luach | Éifeacht de réir an lámhleabhair |
|---|---|---|
memory_hard_limit_percent gan socrú nó -1 |
réamhshocrú | teorainn chrua faoi dhó chomh hard le memory_limit suas le 1G, os a chionn sin memory_limit móide 1G |
memory_hard_limit_percent = 150 |
sampla | le memory_limit=128M teorainn chrua 192M |
memory_limit = -1 |
gan teorainn | ansin níl teorainn chrua ann ach oiread |
Luann an lámhleabhar pointe seiceála praiticiúil: mura n-aithnítear memory_hard_limit_percent, bíonn tionchar ar an leagan PHP a úsáidtear agus ní mór é a nuashonrú. I gcás backports na ndáiltí, seiceáil an staid freisin tríd an changelog pacáiste.
# An bhfuil an socrú nua ar eolas ag an dénártha FPM? (uimhir leagain a oiriúnú)
php-fpm8.3 -i | grep -E 'memory_hard_limit_percent|memory_limit'
Tar éis an nuashonraithe tá a chuspóir comhlíonta ag memory_limit=-1. Fill ar luach críochta a oireann don fheidhmchlár agus cuir faoi ghlas é le php_admin_value. Is féidir leis an teorainn cgroup fanacht mar chiseal breise cosanta.
Conas a chabhraíonn PHP SOS go nithiúil?
- Faighimid amach cá bhfuil
memory_limitsocraithe agus scríofa os a chionn ar do fhreastalaí, na feidhmchláir san áireamh. - Cuirimid bearta idirthréimhseacha php.net i bhfeidhm san áit cheart agus cuirimid teorainn cgroup leis don tseirbhís FPM.
- Tríd an tseirbhís paistí PHP tugaimid PHP chuig staid cheartaithe agus atosaímid gach worker.
- Ina dhiaidh sin socraímid luach críochta oiriúnach arís agus doiciméadaímid na socruithe.
Ceisteanna coitianta
Cad é réamhshocrú memory_limit?
128M de réir lámhleabhar PHP. Cuireann an luach teorainn leis an méid cuimhne a fhéadann script aonair a áitiú. Is féidir é a athrú i php.ini, i gcumraíocht an fhreastalaí, sa linn FPM agus ag am rite le ini_set(), mura bhfuil sé faoi ghlas le php_admin_value.
Cén fáth a molann php.net memory_limit=-1 i gcás PHP2Shell?
Baineann ceann de na leochaileachtaí, CVE-2026-109618, leis an staid nuair atá easpa cuimhne ann. De réir php.net, baineann memory_limit=-1 an teacht spriocdhírithe ar theorainn chuimhne PHP, ach ní gach earráid chuimhne. Ní cosaint iomlán é an beart agus caithfear é a chomhcheangal le teorainn cuimhne trí choimeádán nó cgroup.
An bhfuil cead agam an teorainn a shocrú le ulimit ina ionad?
Níl. Molann php.net go sainráite gan RLIMIT_AS ná RLIMIT_DATA a úsáid mar ionadaí, mar go bhféadfadh na teorainneacha seo go díreach an earráid leochaileach a spreagadh agus cuimhne á hiarraidh. Moltar teorainn trí choimeádán nó cgroup.
Cad atá i bhfeidhm tar éis an nuashonraithe go leagan ceartaithe PHP?
De réir an lámhleabhair, sna leaganacha ceartaithe is teorainn bhog é memory_limit, curtha le teorainn chrua trí memory_hard_limit_percent. Tá a chuspóir comhlíonta ag an mbeart idirthréimhseach le -1 ansin, agus ba cheart luach críochta a oireann don fheidhmchlár a bheith i bhfeidhm arís.