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 agus Out-of-Memory: cad a tharlaíonn istigh

Cad a tharlaíonn nuair a shroicheann script PHP memory_limit? An mheicnic, an teorainn chuimhne chrua nua ó phaistí Dheireadh Fómhair agus an nasc le CVE-2026-109618.

Staid Am léitheoireachta: 6 nóim.Eolas PHP

Go achomair: Tarlaíonn earráid PHP Out-of-Memory nuair a theastaíonn ó script níos mó cuimhne a iarraidh ná mar a cheadaíonn an socrú memory_limit (réamhshocrú: 128 MB in aghaidh an iarratais). Cuireann PHP deireadh leis an iarratas le hearráid mharfach ansin agus glanann sé. Go beacht an bealach scor agus glanta seo a bhí lochtach i gcás CVE-2026-109618, ceann de dhá leochaileacht PHP2Shell. Ó PHP 8.5.12, 8.4.27, 8.3.36 agus 8.2.35 i leith is teorainn bhog é memory_limit, curtha leis an teorainn chrua memory_hard_limit_percent.

Cad is brí le “Allowed memory size exhausted”?

Is é seo bunbhrí na teachtaireachta earráide aitheanta: “Allowed memory size of 134217728 bytes exhausted (tried to allocate …)”. Is é an chéad uimhir an teorainn socraithe i mbearta, 128 MB anseo. Rinne script iarracht cuimhne a áitiú thar an teorainn seo, mar shampla agus comhad mór á luchtú, ceist mhór bunachair sonraí nó lúb gan deireadh.

Tábhachtach do lucht cinnteoireachta: tá an teorainn i bhfeidhm do gach próiseas PHP agus gach iarratas, ní don fhreastalaí ar fad. Cosnaíonn sí an freastalaí ó script lochtach aonair gach cuimhne a ídiú. Ní fhaightear an t-ualach iomlán ach ó líon na n-oibrithe a ritheann ag an am céanna. I gcás 20 oibrí PHP-FPM, gach ceann le teorainn 256 MB, is os cionn 5 GB é sin go ríomhaireachtúil.

Conas a áiríonn PHP cuimhne

Bainistíonn PHP cuimhne d'iarratais trí bhainisteoir cuimhne ar leith, an Zend Memory Manager. Faigheann sé bloic níos mó ón gcóras oibriúcháin agus dáileann sé go hinmheánach iad ar athróga, eagair agus oibiachtaí. Seiceálann PHP memory_limit i gcoinne an luacha in áirithe seo. Cuimhne a iarrann eisínteacht go díreach ón gcóras oibriúcháin, ní thagann sí chun solais san áireamh seo de réir an lámhleabhair.

Is féidir na luachanna a dhéanamh infheicthe sa chód:

<?php
echo memory_get_usage(), PHP_EOL;       // cuimhne atá á húsáid faoi láthair ag an script
echo memory_get_usage(true), PHP_EOL;   // in áirithe ag an mbainisteoir cuimhne; seiceálann memory_limit ina choinne
$liste = range(1, 200000);
echo memory_get_peak_usage(), PHP_EOL;  // uastairseach go dtí seo
unset($liste);
memory_reset_peak_usage();              // an uastairseach a athshocrú, ó PHP 8.2

Míníonn an leathanach Bainistiú cuimhne i PHP conas a scaoileann áireamh tagartha agus bailiú truflais an chuimhne arís.

Cad a tharlaíonn istigh le linn Out-of-Memory

Go simplithe, rithtear scor cuimhne sna céimeanna seo:

  1. Iarrann an script cuimhne, mar shampla do eilimint nua eagair nó agus sonraí iarratais á léamh isteach.
  2. Seiceálann an bainisteoir cuimhne an sáraíonn an t-iarratas an teorainn.
  3. Más amhlaidh, spreagann PHP earráid mharfach agus fágann sé an phróiseáil reatha láithreach, fiú i lár tasc leathchríochnaithe.
  4. Fós ritheann feidhmeanna múchta cláraithe; leo sin logálann a lán feidhmchlár an earráid.
  5. Ag an deireadh glanann PHP an t-iarratas agus scaoileann sé a chuimhne. Bíonn an t-oibrí réidh ansin don chéad iarratas eile.

Is é céim 5 an pointe íogair. Ní mór don ghlanadh déileáil le struchtúir sonraí nach raibh ach leath-chruthaithe ag an scor. De réir pholasaí slándála thionscadal PHP ní mheastar gur leochaileacht slándála é gnáthscor cuimhne, fad a dhiúltaíonn an teorainn don iarratas agus nach dtagann deireadh ach leis an iarratas reatha. Le CVE-2026-109618 sáraíodh go beacht an toimhde seo: de réir php.net d'fhéadfadh an staid Out-of-Memory PHP a idirbhriseadh agus sonraí inmheánacha an iarratais tosaithe ach go páirteach, agus láimhseáil an glanadh sonraí neamhbhailí mar shonraí bailí ansin. Ní fhoilsímid sonraí faoin leas a bhaint as; tá an mheastóireacht ar an leochaileacht ag CVE-2026-109618.

An teorainn chuimhne bhog agus chrua nua

Le heisiúintí slándála an 21.10.2026 d'athraigh tionscadal PHP an t-iompar. De réir an lámhleabhair is teorainn bhog é memory_limit ó shin: i bhformhór na gcásanna féadfar iarratas a sháraíonn é a chríochnú fós sula leanann an earráid mharfach. Cuireann teorainn chrua ar leith srian ar cé chomh fada is féidir dul.

Treoir Réamhshocrú Inathraithe Brí
memory_limit 128M INI_ALL teorainn chuimhne in aghaidh an iarratais, -1 = gan teorainn
memory_hard_limit_percent gan socrú INI_ALL teorainn chrua i gcéatadáin de memory_limit, nua ó 8.5.12, 8.4.27, 8.3.36, 8.2.35
post_max_size 8M INI_PERDIR uasmhéid na sonraí POST
upload_max_filesize 2M INI_PERDIR uasmhéid comhaid uaslódáilte

Sampla ón lámhleabhar: le memory_limit=128M agus memory_hard_limit_percent=150 tá an teorainn chrua ag 192 MB. Luann an lámhleabhar an treoir chomh maith mar chomhartha aitheantais: mura n-aithníonn leagan PHP í, bíonn tionchar ag CVE-2026-109618 agus CVE-2026-109619 air. Tástáil thapa do gach leagan PHP suiteáilte:

php -r 'var_dump(ini_get("memory_hard_limit_percent"));'
# ciallaíonn bool(false): treoir anaithnid

I gcás pacáistí ó dháiltí le backport is é changelog an phacáiste an cruthúnas cinntitheach i gcónaí, mar a thuairiscítear in Leagan PHP agus staid an phaiste a sheiceáil i gceart. Seiceáil an dénártha PHP-FPM ar leith freisin, mar d'fhéadfadh leagan eile a bheith aige ná an líne ordaithe.

Teorainneacha cuimhne agus PHP2Shell: cad ba cheart do riarthóirí a thabhairt faoi deara anois

Baineann beagnach gach beart idirthréimhseach ó php.net do CVE-2026-109618 le cuimhne agus le méideanna iarratais. Laghdaíonn siad an riosca, ach ní thagann siad in ionad an nuashonraithe:

; linn FPM, m.sh. /etc/php/8.3/fpm/pool.d/www.conf
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M        ; 32M, nuair is gá uaslódálacha
php_admin_value[upload_max_filesize] = 6M  ; coinnigh faoi bhun post_max_size

Tá trí phointe cinntitheach ann. Ar an gcéad dul síos, níor cheart d'aon fheidhmchlár, d'aon eolaire ná d'aon linn eile teorainn chríochta a shocrú arís; éilíonn php.net an rialú seo go sainráite. Ar an dara dul síos, teastaíonn teorainn ón taobh amuigh ó sheirbhís le memory_limit=-1, trí choimeádán nó cgroup, ar an mbealach is fearr de réir php.net ionas nach gcuirtear deireadh ach leis an oibrí lena mbaineann. Tá RLIMIT_AS agus RLIMIT_DATA mí-oiriúnach de réir php.net. Ar an tríú dul síos, molann php.net teorainneacha ag an bhfreastalaí gréasáin nó ag an seachfhreastalaí do mhéid iarratais, líon réimsí, codanna multipart, ceanntásca agus doimhneacht neadaithe.

Tábhachtach

Is féidir le memory_limit=-1 gan teorainn chuimhne ón taobh amuigh freastalaí a stopadh go hiomlán faoi ualach ard. Leag na bearta idirthréimhseacha síos mar phacáiste amháin agus go dtí an nuashonrú amháin.

Conas a shocraíonn tú an teorainn le systemd, tá sé le fáil ag Teorainneacha cuimhne le systemd agus cgroups; déanann memory_limit a shocrú i gceart cur síos ar an réiteach buan don saol laethúil.

Conas a chabhraíonn PHP SOS go praiticiúil?

Trí sheirbhís paistithe PHP oibrímid mar seo:

  • An stoc a sheiceáil: Taifeadaimid gach leagan PHP ar an bhfreastalaí, scartha de réir CLI, FPM agus modúl Apache, agus déanaimid tástáil an bhfuil an leagan deisithe ag rith.
  • Teorainneacha cuimhne a chur in ord: Seiceálaimid cá bhfuil memory_limit á shocrú ar fad agus socraímid teorainneacha linne agus córais ionas go n-oireann siad dá chéile.
  • An idirthréimhse a chosaint: Nuair atá an nuashonrú fós bactha, cuirimid bearta php.net i bhfeidhm go hiomlán agus faoi ghlas i gcoinne a sáraithe.
  • Cruthúnas a sholáthar: Faigheann tú leaganacha, staid pacáistí agus cumraíocht roimh an idirghabháil agus ina diaidh i scríbhinn.

Ceisteanna coitianta

Cad is brí leis an teachtaireacht “Allowed memory size exhausted”?

Bhí script ag iarraidh níos mó cuimhne a iarraidh ná mar a cheadaíonn memory_limit. Cuireann PHP deireadh leis an iarratas reatha le hearráid mharfach ansin. Leanann iarratais eile agus an freastalaí féin ar aghaidh ag rith.

An bhfuil memory_limit i bhfeidhm ar an bhfreastalaí ar fad?

Níl, tá an teorainn i bhfeidhm do gach próiseas PHP agus iarratas. Má ritheann 20 oibrí FPM, gach ceann le teorainn 256 MB, d'fhéadfadh siad os cionn 5 GB a áitiú le chéile go teoiriciúil. Dá bhrí sin ní mór an teorainn iomlán a shocrú trí mhéid na linne, systemd nó coimeádán.

Cad é memory_hard_limit_percent?

Treoir nua a tháinig le PHP 8.5.12, 8.4.27, 8.3.36 agus 8.2.35. Socraíonn sí teorainn chrua mar céatadán de memory_limit nach sáraítear choíche. Is teorainn bhog é memory_limit féin ó shin.

An gcosnaíonn memory_limit=-1 i gcoinne PHP2Shell?

Go páirteach amháin. Luann php.net an socrú mar bheart idirthréimhseach i gcoinne CVE-2026-109618, go sainráite gan cosaint iomlán. Teastaíonn teorainn chuimhne ón taobh amuigh uaidh gan teip, agus fanann an nuashonrú éigeantach.

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