An cás reatha: PHP2Shell. Ceadaíonn dhá leochaileacht chriticiúla PHP (CVSS 9.2) cód mailíseach gan logáil isteach. Paistí ar fáil ón 21 Deireadh Fómhair 2026.Cad atá le déanamh anois →

memory_limit a shocrú i gceart

Cuireann memory_limit teorainn leis an gcuimhne in aghaidh gach iarratais PHP. Tar éis PHP2Shell molann php.net go sealadach an rud contrártha. Cad atá i bhfeidhm sa ghnáthoibriú, san idirthréimhse agus tar éis an nuashonraithe.

Staid Am léitheoireachta: 6 nóim.Cruatú agus cumraíocht

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:

  1. memory_limit=-1 a shocrú, más féidir ar bhealach nach féidir le feidhmchláir an luach a scríobh os a chionn, mar shampla le php_admin_value sa linn FPM nó i gcumraíocht Apache.
  2. 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.
  3. 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 í.
  4. Gan RLIMIT_AS ná RLIMIT_DATA a ú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.

Tábhachtach

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_limit socraithe 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.

Foinsí

Teagmháil láithreach

Cuireann gach uair an chloig leis. Scríobh chugainn anois.

Déan cur síos gearr ar an gcóras, leagan PHP agus an rud a thug tú faoi deara. Cuirfimid scéala chugat, soiléireoimid an cás agus oibreoimid go cianda go dtí go mbeidh an teagmhas dúnta agus doiciméadaithe.

Cabhair láithreach