# memory_limit agus Out-of-Memory: cad a tharlaíonn istigh

> PHP Out of Memory mínithe go soiléir: conas a áiríonn memory_limit, cad a tharlaíonn go hinmheánach ag an gcoscadh agus cad is brí leis do CVE-2026-109618 agus do fhreastalaithe.

Foinse: https://phpsos.de/ga/php/out-of-memory/  
Staid: 25/10/2026  
Soláthraí: PHP SOS, Cabhair éigeandála PHP agus slándáil freastalaí. Cabhair láithreach trí WhatsApp: https://wa.me/491736494914?text=Dia%20duit%2C%20a%20PHP%20SOS%2C%20t%C3%A1%20cabhair%20de%20dh%C3%ADth%20orainn%20len%C3%A1r%20bhfreastala%C3%AD%20PHP.%20Cuideachta%3A%20%E2%80%A6%20Su%C3%ADomh%20gr%C3%A9as%C3%A1in%3A%20%E2%80%A6

**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
<?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](https://phpsos.de/ga/php/speicherverwaltung/) 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](https://phpsos.de/ga/php2shell/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:

```bash
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](https://phpsos.de/ga/php2shell/php-version-pruefen/). 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:

```ini
; 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](https://phpsos.de/ga/blog/speichergrenzen-systemd-cgroups/); déanann [memory_limit a shocrú i gceart](https://phpsos.de/ga/blog/memory-limit-richtig-setzen/) 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](https://phpsos.de/ga/leistungen/php-patch-service/) 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í

- [Lámhleabhar PHP: Socruithe croí (memory_limit, memory_hard_limit_percent)](https://www.php.net/manual/en/ini.core.php)
- [Lámhleabhar PHP: memory_get_usage()](https://www.php.net/manual/en/function.memory-get-usage.php)
- [php.net: Fógraí slándála an 21.10.2026](https://www.php.net/)
