# memory_limit u Out-of-Memory: x'jiġri ġewwa

> PHP Out of Memory spjegat b'mod ċar: kif jgħodd memory_limit, x'jiġri ġewwa meta jitwaqqaf l-iskript u x'jfisser dan għal CVE-2026-109618 u għas-servers tagħkom.

Sors: https://phpsos.de/mt/php/out-of-memory/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** Żball PHP Out-of-Memory jinqala' meta skript irid jitlob aktar memorja minn dik li l-issettjar `memory_limit` jippermetti (standard: 128 MB għal kull talba). PHP imbagħad iwaqqaf it-talba b'żball fatali u jnaddaf. Eżatt din it-triq ta' waqfien u tindif kienet difettuża f'CVE-2026-109618, waħda miż-żewġ vulnerabbiltajiet ta' PHP2Shell. Minn PHP 8.5.12, 8.4.27, 8.3.36 u 8.2.35 `memory_limit` huwa limitu artab, imtemm bil-limitu iebes `memory_hard_limit_percent`.

## X'tfisser “Allowed memory size exhausted”?

Il-messaġġ ta' żball magħruf jinqara bejn wieħed u ieħor: “Allowed memory size of 134217728 bytes exhausted (tried to allocate …)”. L-ewwel numru huwa l-limitu ssettjat f'bytes, hawn 128 MB. Skript għalhekk ipprova jokkupa memorja lil hinn minn dan il-limitu, pereżempju meta jgħabbi fajl kbir, mistoqsija kbira lid-database jew permezz ta' linja bla tmiem.

Importanti għal min jieħu d-deċiżjonijiet: il-limitu japplika għal kull proċess ta' PHP u kull talba, mhux għas-server kollu. Jipproteġi lis-server mill-possibbiltà li skript difettuż wieħed jikkonsma l-memorja kollha. It-tagħbija totali tirriżulta biss mill-għadd ta' workers li jaħdmu fl-istess ħin. B'20 worker ta' PHP-FPM b'limitu ta' 256 MB kull wieħed, dan jammonta matematikament għal aktar minn 5 GB.

## Kif PHP jgħodd il-memorja

PHP jamministra l-memorja għat-talbiet permezz ta' memory manager proprju, iz-Zend Memory Manager. Jieħu blokok akbar mis-sistema operattiva u jqassamhom internament lil varjabbli, arrays u oġġetti. Kontra dan il-valur riżervat PHP jivverifika `memory_limit`. Memorja li estensjoni titlob direttament mis-sistema operattiva, skont il-manwal, ma tidhirx f'dan l-għadd.

Tistgħu tagħmlu l-valuri viżibbli fil-kodiċi:

```php
<?php
echo memory_get_usage(), PHP_EOL;       // memorja okkupata bħalissa mill-iskript
echo memory_get_usage(true), PHP_EOL;   // riżervata mill-memory manager; kontra dan jivverifika memory_limit
$liste = range(1, 200000);
echo memory_get_peak_usage(), PHP_EOL;  // l-ogħla valur s'issa
unset($liste);
memory_reset_peak_usage();              // irrisettja l-ogħla valur, minn PHP 8.2
```

Kif l-għadd ta' referenzi u l-garbage collection jeħilsu l-memorja mill-ġdid tispjegah il-paġna [Il-ġestjoni tal-memorja f'PHP](https://phpsos.de/mt/php/speicherverwaltung/).

## X'jiġri ġewwa meta jkun hemm Out-of-Memory

B'mod simplifikat, waqfien minħabba memorja jgħaddi minn dawn il-passi:

1. L-iskript jitlob memorja, pereżempju għal element ġdid ta' array jew meta jaqra data tat-talba.
2. Il-memory manager jivverifika jekk it-talba taqbiżx il-limitu.
3. Jekk dan huwa l-każ, PHP iqajjem żball fatali u jħalli l-ipproċessar kurrenti immedjatament, anki f'nofs kompitu mwettaq nofsu.
4. Funzjonijiet ta' shutdown irreġistrati għad jaħdmu; hekk ħafna applikazzjonijiet jirreġistraw l-iżball.
5. Fl-aħħar PHP inaddaf it-talba u jeħles il-memorja tagħha. Il-worker imbagħad ikun lest għat-talba li jmiss.

Il-punt delikat huwa l-pass 5. It-tindif irid ikun jista' jittratta strutturi tad-data li fil-mument tal-waqfien kienu nofshom biss maħluqa. Waqfien ordinarju minħabba memorja ma jitqiesx, skont il-politika tas-sigurtà tal-proġett PHP, bħala vulnerabbiltà tas-sigurtà, sakemm il-limitu jirrifjuta t-talba u t-talba kurrenti biss tintemm. F'CVE-2026-109618 eżatt din is-suppożizzjoni kienet miksura: skont php.net l-istat ta' Out-of-Memory seta' jinterrompi PHP waqt li d-data interna tat-talba kienet inizjalizzata biss parzjalment, u t-tindif mbagħad ittratta data invalida bħala valida. Dettalji dwar l-isfruttament ma nippubblikawhomx; il-klassifikazzjoni tal-vulnerabbiltà tinsab taħt [CVE-2026-109618](https://phpsos.de/mt/php2shell/cve-2026-109618/).

## Il-limitu l-ġdid artab u dak iebes tal-memorja

Bir-rilaxxi tas-sigurtà tal-21 ta' Ottubru 2026 il-proġett PHP biddel l-imġiba. Skont il-manwal `memory_limit` minn dakinhar huwa limitu artab: talba li taqbeżu tista' fil-biċċa l-kbira tal-każijiet titlesta qabel ma jiġi ż-żball fatali. Limitu iebes separat jillimita kemm dan jista' jmur.

| Direttiva | Standard | Tista' tinbidel | Tifsira |
|---|---|---|---|
| `memory_limit` | 128M | INI_ALL | Limitu tal-memorja għal kull talba, `-1` = l-ebda limitu |
| `memory_hard_limit_percent` | mhux issettjat | INI_ALL | Limitu iebes bħala perċentwal ta' `memory_limit`, ġdid minn 8.5.12, 8.4.27, 8.3.36, 8.2.35 |
| `post_max_size` | 8M | INI_PERDIR | Daqs massimu tad-data POST |
| `upload_max_filesize` | 2M | INI_PERDIR | Daqs massimu ta' fajl imtella' |

Eżempju mill-manwal: b'`memory_limit=128M` u `memory_hard_limit_percent=150` il-limitu iebes jinsab f'192 MB. Il-manwal isemmi d-direttiva fl-istess ħin bħala sinjal tar-rikonoxximent: jekk verżjoni ta' PHP ma tafhiex, hija affettwata minn CVE-2026-109618 u CVE-2026-109619. Test mgħaġġel għal kull verżjoni installata ta' PHP:

```bash
php -r 'var_dump(ini_get("memory_hard_limit_percent"));'
# bool(false) ifisser: direttiva mhux magħrufa
```

Fil-każ ta' pakketti minn distribuzzjonijiet b'backport, il-changelog tal-pakkett jibqa' l-evidenza determinanti, kif deskritt taħt [Kif tivverifikaw sewwa l-verżjoni ta' PHP u l-istat tal-patches](https://phpsos.de/mt/php2shell/php-version-pruefen/). Iċċekkjaw ukoll il-binary ta' PHP-FPM separatament, għax tista' jkollha verżjoni differenti mil-linja tal-kmand.

## Limiti tal-memorja u PHP2Shell: x'għandhom jifhmu l-amministraturi issa

Il-miżuri temporanji ta' php.net għal CVE-2026-109618 kważi kollha jduru madwar il-memorja u d-daqsijiet tat-talbiet. Inaqqsu r-riskju, imma ma jieħdux post l-aġġornament:

```ini
; Pool ta' FPM, pereżempju /etc/php/8.3/fpm/pool.d/www.conf
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M        ; 32M, jekk jinħtieġu uploads
php_admin_value[upload_max_filesize] = 6M  ; żommu taħt post_max_size
```

Tliet punti huma deċiżivi. L-ewwel, l-ebda applikazzjoni, l-ebda direttorju u l-ebda pool ieħor ma jista' jerġa' jissettja limitu finit; php.net jeżiġi espliċitament dan il-kontroll. It-tieni, servizz b'`memory_limit=-1` jeħtieġ limitu minn barra, permezz ta' container jew cgroup, skont php.net aħjar b'mod li jintemm biss il-worker affettwat. `RLIMIT_AS` u `RLIMIT_DATA` huma, skont php.net, mhux adattati. It-tielet, php.net jirrakkomanda limiti fis-server tal-web jew fil-proxy għad-daqs tat-talba, l-għadd ta' oqsma, partijiet multipart, headers u fond tal-inkaljar.

> **Importanti:**
> `memory_limit=-1` mingħajr limitu tal-memorja minn barra jista' jwaqqaf kompletament server taħt tagħbija għolja. Applikaw il-miżuri temporanji biss bħala pakkett u biss sal-aġġornament.

Kif tissettjaw il-limitu b'systemd tinsab taħt [Limiti tal-memorja b'systemd u cgroups](https://phpsos.de/mt/blog/speichergrenzen-systemd-cgroups/); is-soluzzjoni permanenti għall-ħajja ta' kuljum tiddeskrivihom [Kif tissettjaw memory_limit sew](https://phpsos.de/mt/blog/memory-limit-richtig-setzen/).

## Kif jgħin PHP SOS konkretament?

Permezz tas-[Servizz ta' patch għal PHP](https://phpsos.de/mt/leistungen/php-patch-service/) nipproċedu hekk:

- **Verifika tal-istokk:** Nirreġistraw kull verżjoni ta' PHP fuq is-server, separata skont CLI, FPM u modulu ta' Apache, u nittestjaw jekk il-verżjoni bil-korrezzjoni tkunx qed taħdem.
- **Nirranġaw il-limiti tal-memorja:** Niċċekkjaw fejn jiġi ssettjat `memory_limit` kullimkien u nwaqqfu limiti tal-pool u tas-sistema li jaqblu flimkien.
- **Nassiguraw it-tranżizzjoni:** Fejn l-aġġornament għadu mblukkat, napplikaw il-miżuri ta' php.net kompletament u mblukkati kontra s-sostituzzjoni.
- **Nagħtu evidenza:** Tirċievu bil-miktub verżjonijiet, stati tal-pakketti u konfigurazzjoni qabel u wara l-intervent.


## Mistoqsijiet frekwenti

**X'tfisser il-messaġġ “Allowed memory size exhausted”?**  
Skript ried jitlob aktar memorja minn dik li memory_limit jippermetti. PHP imbagħad iwaqqaf it-talba kurrenti b'żball fatali. Talbiet oħra u s-server innifsu jibqgħu jaħdmu.

**memory_limit japplika għas-server kollu?**  
Le, il-limitu japplika għal kull proċess ta' PHP u kull talba. Jekk jaħdmu 20 worker ta' FPM b'limitu ta' 256 MB kull wieħed, flimkien jistgħu teoretikament jokkupaw aktar minn 5 GB. Il-limitu totali għalhekk irid jiġi ssettjat permezz tad-daqs tal-pool, systemd jew container.

**X'inhi memory_hard_limit_percent?**  
Direttiva ġdida li daħlet ma' PHP 8.5.12, 8.4.27, 8.3.36 u 8.2.35. Tistabbilixxi limitu iebes bħala perċentwal ta' memory_limit li qatt ma jinqabeż. memory_limit nnifsu minn dakinhar huwa limitu artab.

**memory_limit=-1 jipproteġi minn PHP2Shell?**  
Parzjalment biss. php.net isemmi l-issettjar bħala miżura temporanja kontra CVE-2026-109618, espliċitament mingħajr protezzjoni sħiħa. Jeħtieġ bil-fors limitu tal-memorja minn barra, u l-aġġornament jibqa' obbligatorju.

## Sorsi

- [Manwal ta' PHP: Issettjar tal-qalba (memory_limit, memory_hard_limit_percent)](https://www.php.net/manual/en/ini.core.php)
- [Manwal ta' PHP: memory_get_usage()](https://www.php.net/manual/en/function.memory-get-usage.php)
- [php.net: Avviżi tas-sigurtà tal-21 ta' Ottubru 2026](https://www.php.net/)
