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 →

An Zend Engine: croí PHP

Aistríonn an Zend Engine cód PHP ina opcodes agus ritheann sé iad. Má thuigeann tú a codanna, tuigfidh tú cén fáth nach gceartaíonn ach nuashonrú PHP leochaileachtaí sa chroí ar nós PHP2Shell.

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

Go achomair: Is é an Zend Engine croí PHP. Aistríonn sé cód PHP ina opcodes, ritheann sé iad i meaisín fíorúil agus bainistíonn sé athróga agus cuimhne ag an am céanna. Ó PHP 4 i leith tá sé i ngach suiteáil PHP. Toisc go bhfuil leochaileachtaí PHP2Shell sa chroí seo, ní chabhraíonn breiseáin ná nuashonruithe CMS; ní chabhraíonn ach PHP nuashonraithe agus atosú.

Cad is Zend Engine ann?

Is é an Zend Engine an chuid de PHP a dhéanann an fíorobair. Tógtar gach rud eile air, mar shampla an nasc leis an bhfreastalaí gréasáin nó eisínteachtaí do bhunachair sonraí. Is féidir é a chur i gcomparáid le hinneall gluaisteáin: bíonn an cabhail agus an trealamh difriúil, ach tiomáineann an t-inneall gach rud.

De réir lámhleabhar PHP, cumadh an t-ainm as céadainmneacha na bhforbróirí Zeev Suraski agus Andi Gutmans. Cuireadh an t-inneall i láthair i lár 1999 agus ó PHP 4.0, a tháinig amach i mí na Bealtaine 2000, ba é croí PHP é. Ó shin i leith rinneadh athbhreithniú bunúsach air arís agus arís eile.

Leagan PHP Inneall An t-athrú is tábhachtaí de réir an lámhleabhair agus RFCanna
PHP 4.0 (2000) Zend Engine an chéad chroí comhroinnte, feidhmíocht níos fearr
PHP 5.0 (2004) Zend Engine 2.0 múnla oibiachta nua
PHP 7.0 (2015) Zend Engine 3.0 PHPNG: struchtúir sonraí níos dlúithe, AST
PHP 8.0 (2020) Forbairt bhreise tiomsaitheoir JIT mar chuid de OPcache

Na codanna: tiomsaitheoir, meaisín fíorúil, cuimhne

Oibríonn an t-inneall i gcéimeanna scartha go soiléir. Ó PHP 7 i leith, de réir an RFC faoin gcrann comhréire teibí, tá trí chéim ann go dtí an bytecode:

  1. Lexer: briseann sé an cód foinseach ina tokens, mar shampla eochairfhocail, ainmneacha athróg agus teaghráin.
  2. Parsálaí: tógann sé crann comhréire teibí (AST) as na tokens, a léiríonn struchtúr an chláir.
  3. Tiomsaitheoir: gineann sé op-arrays as an AST, is é sin liostaí opcodes, ceann amháin do gach comhad agus feidhm.
  4. Feidhmeannach (Zend VM): oibríonn sé trí na hopcodes. De réir RFC an JIT, bíonn feidhm láimhseálaí ag gach opcode a ritheann é.
  5. Bainistiú cuimhne: cuireann sé cuimhne in áirithe agus saorann sé í do gach iarratas agus déanann sé faireachán ar an teorainn ó memory_limit.

Is féidir tokens scripte a dhéanamh infheicthe leis an eisínteacht Tokenizer. Tá sé seo neamhdhíobhálach agus oideachasúil:

<?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";
    }
}

Taispeánann an t-aschur iontrálacha ar nós T_VARIABLE: $summe nó T_LNUMBER: 2. Oibríonn an parsálaí leis na codanna seo go díreach.

Conas a bhainistíonn an Zend Engine athróga?

De réir an lámhleabhair, tá gach athróg PHP i gcoimeádán dar ainm zval. Tá cineál agus luach ann chomh maith le sonraí bainistíochta, comhaire tagartha (refcount) ina measc. Insíonn an comhaire cé mhéad ainm athróige atá ag díriú ar an gcoimeádán céanna.

<?php
$a = str_repeat('x', 10);
$b = $a;        // gan chóipeáil, díríonn an dá cheann ar an luach céanna
$b .= 'y';      // anois amháin a chóipeáiltear (copy on write)
unset($a);      // laghdaíonn an comhaire, saorfar an chuimhne nuair a shroicheann sé 0

Nuair a shroicheann an comhaire nialas, saorann an t-inneall an chuimhne. I gcás tagairtí ciorclacha idir oibiachtaí, tá bailitheoir dramhaíola ann freisin. Tuilleadh san alt Bainistiú cuimhne i PHP.

Thosaigh an t-athbhreithniú PHPNG do PHP 7 anseo go díreach. De réir RFC le Dmitry Stogov agus Zeev Suraski, bhain sé le struchtúir sonraí níos dlúithe agus léiriú níos cliste ar luachanna. Luaigh an RFC gnóthachain feidhmíochta de 20 go 110 faoin gcéad i bhfeidhmchláir réadacha.

OPcache agus JIT: leathnuithe ar an inneall

Gan taisce, aistríonn an t-inneall gach script as an nua le gach iarratas. Coinníonn OPcache na hopcodes chríochnaithe réidh sa chuimhne roinnte. Ó PHP 8.0 i leith tá tiomsaitheoir JIT ann freisin. De réir an RFC, tá sé bunaithe ar DynASM, uirlis ó thionscadal LuaJIT, agus gineann sé cód meaisín go díreach ón mbytecode. Fanann an meaisín fíorúil gan athrú; ní chuireann an JIT ach áiteanna isteach na láimhseálaithe in ionad.

Do na hoibreoirí, ciallaíonn sé seo: luasghéaraíonn OPcache agus JIT an t-inneall, ach ní athraíonn siad a iompar nuair a tharlaíonn earráidí. Fanann leochaileacht sa chroí fiú le taisce gníomhach.

Cén fáth a bhfuil leochaileachtaí san inneall thar a bheith tromchúiseach

Tá an dá leochaileacht PHP2Shell i gcroí PHP. I gcás CVE-2026-109618, féadann staid Out of Memory an t-inneall a idirbhriseadh nuair nach bhfuil sonraí iarratais tosaithe ach go páirteach; le linn an ghlanta ansin déantar sonraí neamhbhailí a láimhseáil mar shonraí bailí. I gcás CVE-2026-109619, fanann staid inmheánach tar éis don chuimhne a bheith saortha agus féadann iarratas níos déanaí san oibrí céanna í a úsáid.

Athraíonn na leaganacha ceartaithe 8.5.12, 8.4.27, 8.3.36 agus 8.2.35, de réir lámhleabhar PHP, iompar na teorann cuimhne freisin: is teorainn bhog é memory_limit iontu, socraíonn socrú nua memory_hard_limit_percent uasteorainn chrua. Tugann an lámhleabhar le fios go mbíonn tionchar ag na leochaileachtaí ar leagan nach n-aithníonn an socrú seo. I gcás dáiltí le backports, tá changelog an phacáiste tábhachtach freisin.

Tábhachtach

Tá an t-inneall luchtaithe i ngach próiseas PHP. Tar éis an nuashonraithe, mar sin, ní mór gach oibrí PHP-FPM, próisis Apache le mod_php agus seirbhísí PHP eile a atosú.

Déanann an t-alt memory_limit agus Out-of-Memory cur síos ar an méid a tharlaíonn go hinmheánach nuair a bhíonn easpa cuimhne ann. Tá aicmiú na leochaileachta féin ar CVE-2026-109618.

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

  • Leagan agus staid pacáiste a sheiceáil: Faighimid amach cén staid inneall atá ag rith i ndáiríre, backports do dháilte san áireamh.
  • Nuashonrú agus atosú: Tríd an tseirbhís paistithe PHP suiteálaimid an nuashonrú agus deimhnímid nach bhfuil aon phróiseas fágtha leis an seanchód.
  • Teorainneacha cuimhne a shocrú go ciallmhar: Comhordaímid memory_limit, an teorainn chrua nua agus teorainneacha cgroup le do fheidhmchlár.
  • Neamhghnáchaíochtaí a imscrúdú: Aicmímid tuairteanna oibrithe nó próisis le stádas scoir 137 agus seiceálaimid an bhféadfadh ionsaí a bheith taobh thiar díobh.

Ceisteanna coitianta

Cad as a dtagann ainm an Zend Engine?

Is as céadainmneacha a forbróirí a chuirtear an t-ainm le chéile: Zeev Suraski agus Andi Gutmans. De réir lámhleabhar PHP, cuireadh an t-inneall i láthair i lár 1999 agus ó PHP 4.0 i mí na Bealtaine 2000 ba é croí PHP é.

An táirge ar leith é an Zend Engine a gcaithfidh mé a shuiteáil?

Ní hea. Is cuid sheasta de gach suiteáil PHP é an Zend Engine. Má nuashonraíonn tú PHP, nuashonraíonn tú an t-inneall go huathoibríoch freisin. Níl aon bhaint aige le táirgí tráchtála na cuideachta Zend.

Cad is opcode ann?

Is ordú aonair é opcode do mheaisín fíorúil PHP, mar shampla suimiú, glao feidhme nó sannadh. Aistríonn an tiomsaitheoir gach script ina shraith ordaithe den sórt sin, agus oibríonn an t-inneall tríd ansin.

Cad é an bhaint atá ag an Zend Engine le memory_limit?

Bainistíonn an t-inneall cuimhne gach iarratais agus tugann sé aird ar an teorainn ó memory_limit. Ó eisiúintí slándála an 21.10.2026 i leith, is teorainn bhog í an teorainn seo de réir an lámhleabhair, curtha leis an teorainn chrua trí memory_hard_limit_percent.

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