# Iz-Zend Engine: il-qalb ta' PHP

> Iz-Zend Engine spjegata: kompilatur, opcodes, magna virtwali, zval u ġestjoni tal-memorja fil-qalba ta' PHP, il-verżjonijiet tagħha u l-importanza għall-patches.

Sors: https://phpsos.de/mt/php/zend-engine/  
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:** Iz-Zend Engine hija l-qalba ta' PHP. Tittraduċi l-kodiċi PHP f'opcodes, teżegwihom f'magna virtwali u fl-istess ħin tamministra l-varjabbli u l-memorja. Minn PHP 4 'l hawn tinsab f'kull installazzjoni ta' PHP. Peress li l-vulnerabbiltajiet ta' PHP2Shell jinsabu f'din il-qalba, ma jgħinux plugins jew aġġornamenti taċ-CMS, imma biss PHP aġġornata b'restart.

## X'inhi z-Zend Engine?

Iz-Zend Engine hija l-parti ta' PHP li tagħmel ix-xogħol effettiv. Kull ħaġa oħra, bħall-konnessjoni mas-server tal-web jew l-estensjonijiet għad-databases, tinbena fuqha. Tistgħu tqabbluha mal-magna ta' karozza: il-karrozzerija u t-tagħmir jvarjaw, il-magna tmexxi kollox.

Skont il-manwal ta' PHP, l-isem huwa magħmul mill-ismijiet tal-iżviluppaturi Zeev Suraski u Andi Gutmans. L-engine ġiet ippreżentata f'nofs l-1999 u minn PHP 4.0, li ħarġet f'Mejju 2000, saret il-qalba ta' PHP. Minn dak iż-żmien ġiet irrevedita sostanzjalment diversi drabi.

| Verżjoni ta' PHP | Engine | L-iktar bidla importanti skont il-manwal u l-RFCs |
|---|---|---|
| PHP 4.0 (2000) | Zend Engine | l-ewwel qalba komuni, prestazzjoni aħjar |
| PHP 5.0 (2004) | Zend Engine 2.0 | mudell ġdid tal-oġġetti |
| PHP 7.0 (2015) | Zend Engine 3.0 | PHPNG: strutturi tad-dejta aktar kompatti, AST |
| PHP 8.0 (2020) | Żvilupp ulterjuri | kompilatur JIT bħala parti minn OPcache |

## Il-komponenti: kompilatur, magna virtwali, memorja

L-engine taħdem fi stadji ċari u separati. Minn PHP 7, skont l-RFC dwar is-siġra astratta tas-sintassi, hemm tliet fażijiet sal-bytecode:

1. **Lexer:** ifarrak il-kodiċi sors f'tokens, pereżempju kliem ewlieni, ismijiet ta' varjabbli u ktajjen ta' karattri.
2. **Parser:** jibni mit-tokens siġra astratta tas-sintassi (AST) li tirrappreżenta l-istruttura tal-programm.
3. **Kompilatur:** joħloq mill-AST op-arrays, jiġifieri listi ta' opcodes, waħda għal kull fajl u funzjoni.
4. **Executor (Zend VM):** jaħdem l-opcodes. Skont l-RFC tal-JIT, kull opcode għandu funzjoni handler li teżegwixxih.
5. **Ġestjoni tal-memorja:** tirriżerva u teħles il-memorja għal kull talba u fl-istess ħin tissorvelja l-limitu minn `memory_limit`.

It-tokens ta' skrip jistgħu jsiru viżibbli bl-estensjoni Tokenizer. Dan huwa bla ħsara u jgħallem:

```php
<?php
$code = '<?php $summe = 2 + 3; echo $summe;';
foreach (token_get_all($code) as $token) {
    if (is_array($token)) {
        echo token_name($token[0]), ': ', trim($token[1]), "\n";
    } else {
        echo 'Zeichen: ', $token, "\n";
    }
}
```

L-output juri entrati bħal `T_VARIABLE: $summe` jew `T_LNUMBER: 2`. Eżattament b'dawn il-blokok il-parser ikompli jaħdem.

## Kif iz-Zend Engine tamministra l-varjabbli?

Kull varjabbli ta' PHP tinsab, skont il-manwal, f'kontenitur imsejjaħ zval. Fih it-tip u l-valur kif ukoll informazzjoni ta' ġestjoni, fosthom għadd ta' referenzi (refcount). Il-kontatur jindika kemm ismijiet ta' varjabbli jindikaw lejn l-istess kontenitur.

```php
<?php
$a = str_repeat('x', 10);
$b = $a;        // ebda kopja, it-tnejn jindikaw lejn l-istess valur
$b .= 'y';      // issa biss issir il-kopja (copy on write)
unset($a);      // il-kontatur jinżel, il-memorja tinħeles meta jilħaq 0
```

Meta l-kontatur jilħaq żero, l-engine teħles il-memorja. Għal referenzi ċirkolari bejn l-oġġetti hemm ukoll garbage collector. Aktar dwar dan fl-artikolu [Ġestjoni tal-memorja f'PHP](https://phpsos.de/mt/php/speicherverwaltung/).

Ir-reviżjoni PHPNG għal PHP 7 bdiet eżattament hawn. Skont l-RFC ta' Dmitry Stogov u Zeev Suraski, kien jitratta strutturi tad-dejta aktar kompatti u rappreżentazzjoni aktar għaqlija tal-valuri. L-RFC semma qligħ fil-prestazzjoni ta' 20 sa 110 fil-mija f'applikazzjonijiet reali.

## OPcache u JIT: estensjonijiet tal-engine

Mingħajr cache l-engine tittraduċi kull skrip mill-ġdid ma' kull talba. L-[OPcache](https://phpsos.de/mt/php/opcache/) iżomm l-opcodes lesti fil-memorja kondiviża. Minn PHP 8.0 'l quddiem hemm ukoll kompilatur JIT. Skont l-RFC, huwa bbażat fuq DynASM, għodda mill-proġett LuaJIT, u joħloq kodiċi tal-magna direttament mill-bytecode. Il-magna virtwali tibqa' bla bidla; il-JIT jissostitwixxi biss il-punti tad-dħul tal-handlers.

Għall-operaturi dan ifisser: OPcache u JIT iħaffu l-engine, imma ma jibdlu xejn fl-aġir tagħha fil-każ ta' żbalji. Vulnerabbiltà fil-qalba tibqa' teżisti anki b'cache attiva.

## Għaliex vulnerabbiltajiet fl-engine jiżnu b'mod speċjali

Iż-żewġ vulnerabbiltajiet ta' PHP2Shell jinsabu fil-qalba ta' PHP. Fil-każ ta' CVE-2026-109618, kundizzjoni ta' out-of-memory tista' tinterrompi lill-engine waqt li d-dejta tat-talba tkun inizjalizzata biss parzjalment; fit-tindif dejta invalida mbagħad tiġi trattata bħala valida. Fil-każ ta' CVE-2026-109619, stat intern jibqa' wara li l-memorja tinħeles u jista' jintuża minn talba aktar tard fl-istess worker.

Il-verżjonijiet irranġati 8.5.12, 8.4.27, 8.3.36 u 8.2.35 jibdlu, skont il-manwal ta' PHP, ukoll l-aġir tal-limitu tal-memorja: `memory_limit` hemmhekk huwa limitu artab, setting ġdid `memory_hard_limit_percent` jistabbilixxi limitu massimu iebes. Il-manwal jindika li verżjoni li ma tafx dan is-setting hija affettwata mill-vulnerabbiltajiet. Fid-distribuzzjonijiet b'backports jgħodd ukoll il-changelog tal-pakkett.

> **Importanti:**
> L-engine hija mgħobbija f'kull proċess ta' PHP. Wara l-aġġornament għalhekk iridu jerġgħu jinbdew il-workers kollha ta' PHP-FPM, il-proċessi ta' Apache b'mod_php u servizzi oħra ta' PHP.

X'jiġri ġewwa meta tintlaħaq il-limitu tal-memorja jiddeskrivi l-artikolu [memory_limit u Out-of-Memory](https://phpsos.de/mt/php/out-of-memory/). Il-klassifikazzjoni tal-vulnerabbiltà nnifisha tinsab taħt [CVE-2026-109618](https://phpsos.de/mt/php2shell/cve-2026-109618/).

## Kif jgħin PHP SOS konkretament?

- **Nivverifikaw il-verżjoni u l-istat tal-pakkett:** Niddeterminaw liema stat tal-engine jaħdem tassew, inklużi l-backports tad-distribuzzjoni tagħkom.
- **Naġġornaw u nerġgħu nibdew:** Permezz tas-[Servizz ta' patch għal PHP](https://phpsos.de/mt/leistungen/php-patch-service/) nitfgħu l-aġġornament u nikkontrollaw li ma jibqa' ebda proċess bil-kodiċi qadim.
- **Nissettjaw il-limiti tal-memorja b'mod raġonevoli:** Nallinjaw `memory_limit`, il-limitu iebes il-ġdid u l-limiti tal-cgroup mal-applikazzjoni tagħkom.
- **Neżaminaw l-anomaliji:** Kraxxijiet tal-workers jew proċessi b'exit status 137 niklassifikawhom u nivverifikaw jekk jistax ikun hemm attakk warajhom.


## Mistoqsijiet frekwenti

**Minn fejn ġie l-isem taz-Zend Engine?**  
L-isem huwa magħmul mill-ismijiet tal-iżviluppaturi tagħha: Zeev Suraski u Andi Gutmans. Skont il-manwal ta' PHP, l-engine ġiet ippreżentata f'nofs l-1999 u minn PHP 4.0, f'Mejju 2000, saret il-qalba ta' PHP.

**Iz-Zend Engine hija prodott separat li jrid jiġi installat?**  
Le. Iz-Zend Engine hija parti fissa minn kull installazzjoni ta' PHP. Min jaġġorna PHP jaġġorna awtomatikament ukoll l-engine. Ma għandha x'taqsam xejn mal-prodotti kummerċjali tal-kumpanija Zend.

**X'inhu opcode?**  
Opcode huwa kmand individwali għall-magna virtwali ta' PHP, pereżempju żieda, sejħa ta' funzjoni jew assenjazzjoni. Il-kompilatur jittraduċi kull skrip f'sekwenza ta' kmandi bħal dawn, li mbagħad l-engine taħdem wieħed wieħed.

**X'għandha x'taqsam iz-Zend Engine ma' memory_limit?**  
L-engine tamministra l-memorja ta' kull talba u tħares il-limitu minn memory_limit. Mill-verżjonijiet tas-sigurtà tal-21/10/2026 'l quddiem, skont il-manwal, dan il-limitu huwa limitu artab, imtamm b'limitu iebes permezz ta' memory_hard_limit_percent.

## Sorsi

- [Manwal ta' PHP: L-istorja ta' PHP](https://www.php.net/manual/en/history.php.php)
- [PHP RFC: PHPNG](https://wiki.php.net/rfc/phpng)
- [PHP RFC: JIT](https://wiki.php.net/rfc/jit)
- [Manwal ta' PHP: Għadd ta' referenzi](https://www.php.net/manual/en/features.gc.refcounting-basics.php)
- [Manwal ta' PHP: Settings tal-qalba (memory_limit)](https://www.php.net/manual/en/ini.core.php)
