# memory_limit a shocrú i gceart

> PHP memory_limit a shocrú i gceart: cad a dhéanann sé, cad a mholann php.net go sealadach do PHP2Shell agus cad atá i bhfeidhm tar éis an nuashonraithe.

Foinse: https://phpsos.de/ga/blog/memory-limit-richtig-setzen/  
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:** 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](https://phpsos.de/ga/php2shell/cve-2026-109618/); míníonn [memory_limit agus as-chuimhne](https://phpsos.de/ga/php/out-of-memory/) 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](https://phpsos.de/ga/php2shell/sofortmassnahmen-ohne-patch/).

```ini
; 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
```

```bash
# 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](https://phpsos.de/ga/blog/speichergrenzen-systemd-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.

```bash
# 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](https://phpsos.de/ga/leistungen/php-patch-service/) 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í

- [php.net: fógra slándála an 21 Deireadh Fómhair 2026](https://www.php.net/)
- [Lámhleabhar PHP: socruithe croí (memory_limit)](https://www.php.net/manual/en/ini.core.php)
- [Lámhleabhar PHP: cumraíocht FPM](https://www.php.net/manual/en/install.fpm.configuration.php)
