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 timthriall saoil iarratais: tosú, rith, múchadh

Conas a thosaíonn PHP próisis, a láimhseálann sé iarratais agus a ghlanann sé idir iarratais. Leis na céimeanna MINIT go MSHUTDOWN agus an nasc le CVE-2026-109619.

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

Go achomair: Tá dhá leibhéal ag an PHP Request Lifecycle. Uair amháin in aghaidh an phróisis luchtaíonn PHP a eisínteachtaí (céim MINIT) agus díchóimeálann sé ag an deireadh iad (MSHUTDOWN). Do gach iarratas aonair tá céim thosaithe agus glantacháin ar leith ann (RINIT agus RSHUTDOWN). In oibriú gréasáin láimhseálann oibrí go leor iarratas ceann i ndiaidh a chéile, agus dá bhrí sin ní mór do PHP staid iarratais ar fad a athshocrú go hiontaofa idir dhá iarratas. Go beacht ag an teorainn seo a bhí CVE-2026-109619, an dara leochaileacht PHP2Shell.

Dhá leibhéal: an próiseas agus an t-iarratas

Do dhaoine nach teicneoirí iad cabhraíonn pictiúr: is cosúil le cuntar in oifig stáit oibrí PHP. Socraítear an cuntar uair amháin ar maidin, le foirmeacha, stampaí agus ríomhaire. Ansin tagann go leor cuairteoirí ceann i ndiaidh a chéile. Tar éis gach cuairteora ní mór an bord a bheith folamh, ionas nach bhfeiceann an chéad duine eile páipéir dhuine eile.

Oibríonn PHP ar an mbealach céanna. Nuair a thosaíonn próiseas, luchtaíonn sé eisínteachtaí agus socruithe atá mar a chéile do gach iarratas. Faigheann gach iarratas ansin a chuimhne féin, a athróga féin agus a shonraí iarratais féin ar nós $_GET, $_POST nó $_FILES. Ag deireadh an iarratais scaoileann PHP an chuimhne seo. Achoimríonn an PHP Internals Book go gearr é: déanann PHP dearmad ar chuimhne an iarratais ag deireadh gach iarratais.

Céimeanna an PHP Request Lifecycle i mbeagán focal

Tagann na hainmneacha ó istigh i PHP; is féidir le gach eisínteacht í féin a cheangal leis na céimeanna seo.

Céim Cathain a ritheann sí Cé chomh minic Tasc tipiciúil
MINIT (Module Init) nuair a thosaíonn an próiseas uair amháin in aghaidh an phróisis eisínteachtaí a chlárú, iontrálacha ini a chruthú, sonraí buana
GINIT nuair a chruthaítear na globals in aghaidh an phróisis, le snáitheanna in aghaidh an tsnáithe athróga domhanda eisínteachta a ullmhú
RINIT (Request Init) ag tús gach iarratais in aghaidh an iarratais cuimhne agus staid an iarratais a ullmhú
Rith idir an dá cheann in aghaidh an iarratais ritheann do chód PHP
RSHUTDOWN ag deireadh gach iarratais in aghaidh an iarratais acmhainní an iarratais a scaoileadh
PRSHUTDOWN tar éis RSHUTDOWN in aghaidh an iarratais, annamh in úsáid obair ghlantacháin dheiridh
MSHUTDOWN nuair a chríochnaíonn an próiseas uair amháin in aghaidh an phróisis sonraí buana a scaoileadh

Abairt thábhachtach ón PHP Internals Book d'fhorbróirí eisínteachtaí: ní fholmhaítear globals go huathoibríoch tar éis gach iarratais. An méid ar gá dó a bheith úr in aghaidh an iarratais, tá sé le hathshocrú i RINIT. Léiríonn an riail seo cén fáth a bhfuil an teorainn idir dhá iarratas ina pointe criticiúil don tslándáil.

Ag deireadh iarratais tá an t-ord socraithe freisin: ar dtús ritheann feidhmeanna múchta a chláraigh tú le register_shutdown_function(), ansin scriostóirí, ansin folmhaítear an maolán aschuir. Ina dhiaidh sin amháin leanann RSHUTDOWN.

Cén fáth a n-athúsáidtear oibrithe

Ar an líne ordaithe láimhseálann próiseas iarratas amháin go beacht agus críochnaíonn sé. In oibriú gréasáin bheadh sin ró-mhall. Coinníonn PHP-FPM, Apache le mod_php, LiteSpeed agus FrankenPHP oibrithe i dtaisce dá bhrí sin, a fhreastalaíonn ar go leor iarratas as a chéile. Ritheann MINIT uair amháin ansin, RINIT agus RSHUTDOWN na mílte uair. Míníonn PHP-FPM mínithe conas a rialaíonn FPM a oibrithe.

I PHP-FPM socraíonn pm.max_requests tar éis cé mhéad iarratas a n-atosaíonn oibrí. Is é 0 an réamhshocrú, is é sin gan teorainn. Luann an lámhleabhar an socrú mar mhodh i gcoinne sceitheadh cuimhne i leabharlanna tríú páirtí:

; linn FPM: oibrithe a atosú tar éis 500 iarratas (i gcoinne sceitheadh cuimhne)
pm = dynamic
pm.max_children = 20
pm.max_requests = 500

Téann mód oibrí FrankenPHP níos faide fós: ansin tosaíonn an feidhmchlár ar fad uair amháin agus fanann sé sa chuimhne. Mairfidh staid an fheidhmchláir ar leibhéal PHP freisin ansin. Léiríonn an sampla an difríocht:

<?php
function anfrageZaehler(): int
{
    static $zaehler = 0;   // in oibriú clasaiceach FPM 0 arís in aghaidh an iarratais
    return ++$zaehler;     // i mód oibrí leanann an luach ag comhaireamh thar iarratais
}
echo anfrageZaehler();

In oibriú clasaiceach aschuireann an glao 1 i gcónaí, mar scriosann PHP cuimhne an iarratais. I mód oibrí fásann an luach fad a mhaireann an t-oibrí. Comhairlíonn doiciméadú FrankenPHP dá bhrí sin staid a bhaineann le hiarratas a athshocrú d'aon ghnó idir iarratais.

Cá dtosaíonn CVE-2026-109619

Ní bhaineann CVE-2026-109619 le cód d'fheidhmchláir, ach le PHP féin. De réir php.net d'fhéadfadh staid inmheánach a bhain leis an iarratas maireachtáil tar éis a chuimhne a scaoileadh. D'fhéadfadh iarratas níos déanaí san oibrí céanna í a úsáid sula ndearna an tosú í a athshocrú. Sa phictiúr: d'fhan nóta ar bhord an chuntair a bhí le glanadh cheana. Ní fhoilsímid sonraí faoin leas a bhaint as d'aon ghnó; tá an mheastóireacht ag CVE-2026-109619.

Tosaíonn bearta idirthréimhseacha php.net don leochaileacht seo ag bealaí deimhnithe, ní cosaint iomlán iad:

  1. session.upload_progress.enabled=0 in php.ini, i linn FPM nó i gcumraíocht an fhreastalaí, ansin gach oibrí a atosú; ní trí ini_set() ná .user.ini.
  2. Ar PHP 8.5 fatal_error_backtraces=0 agus atosú ina theannta.
  3. Socruithe neamhbhailí nó imithe i léig in aghaidh an iarratais a bhaint a ghineann teachtaireachtaí roimh an tosú. Ní chabhraíonn sé de réir php.net teachtaireachtaí a cheilt amháin.
  4. Earráidí marfacha agus sáruithe teorann ama a fhéadfar a spreagadh ón taobh amuigh a cheartú san fheidhmchlár, i bhfreagraí ar ais, i bpróiseáil uaslódála agus iompórtála san áireamh.

Is é an nuashonrú go PHP 8.5.12, 8.4.27, 8.3.36 nó 8.2.35 an fíorleigheas. Toisc go bhfuil an earráid san oibrí atá ag rith, ní bhíonn tionchar aige ach tar éis gach próiseas a atosú; tá na céimeanna ag PHP-FPM agus gach oibrí a atosú.

Leid

Seiceáil tar éis an atosaithe le ps -eo pid,lstart,cmd | grep php an ndearnadh gach próiseas PHP a thosú tar éis am an nuashonraithe.

Cad is brí leis an timthriall saoil don oibriú agus don fhorbairt

Ón tsamhail seo díorthaítear rialacha soiléire. Do riarthóirí: ní bhíonn nuashonrú éifeachtach go dtí nach bhfuil próiseas le seanchód ag rith a thuilleadh. Teastaíonn atosú doiciméadaithe ó gach mód oibriúcháin le hoibrithe fadsaolacha. D'fhorbróirí: níor cheart do chód a ritheann i modhanna oibrí staid a bhaineann le hiarratas a fhágáil in athróga statacha nó i singletons, mar shampla sonraí úsáideora nó ceadanna. Don bheirt: logaí ón 20.10.2026 a choinneáil, chun a mheas níos déanaí ar tharla rud éigin roimh an bpaiste.

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

Leis an tseirbhís paistithe PHP cuirimid an tsamhail i bhfeidhm sa chleachtas:

  • An mód oibriúcháin a chinneadh: Faighimid amach an bhfuil PHP-FPM, mod_php, LiteSpeed, FrankenPHP nó php-cgi ag rith agus conas a bhainistítear oibrithe.
  • Nuashonrú agus atosú: Suiteálaimid an leagan ceartaithe agus atosaímid gach oibrí ar bhealach rialaithe.
  • Seiceáil próisis: Cruthaímid le hamanna tosaithe agus leaganacha nach bhfuil aon seanphróiseas fágtha.
  • Modhanna oibrí a sheiceáil: I gcás feidhmchlár fadsaolach scrúdaímid an ndéantar staid a bhaineann le hiarratas a athshocrú go glan.

Ceisteanna coitianta

An dtosaíonn PHP próiseas nua do gach iarratas?

Ar an líne ordaithe tosaíonn, in oibriú gréasáin de ghnáth ní thosaíonn. Ligeann PHP-FPM, Apache le mod_php, LiteSpeed nó FrankenPHP do phróiseas amháin go leor iarratas a láimhseáil ceann i ndiaidh a chéile. Idir iarratais glanann PHP staid an iarratais.

Cad é an difríocht idir MINIT agus RINIT?

Ritheann MINIT uair amháin, nuair a thosaíonn an próiseas PHP, agus cruthaíonn sé struchtúir bhuana. Ritheann RINIT ag tús gach iarratais aonair agus ullmhaíonn sé an méid nach dteastaíonn ach don iarratas sin.

An gcabhraíonn pm.max_requests i gcoinne CVE-2026-109619?

Ní luann php.net atosuithe oibrithe níos minice mar bheart idirthréimhseach. Ní chuireann an socrú teorainn ach le líon na n-iarratas a láimhseálann oibrí sula n-atosaíonn sé. I gcoinne na leochaileachta cabhraíonn an nuashonrú agus atosú gach oibrí ina dhiaidh.

Cad é mód oibrí FrankenPHP?

I mód oibrí tosaíonn an feidhmchlár uair amháin agus fanann sé sa chuimhne. Sábhálann sé sin am, ach fanann athróga statacha, globals agus taisceanna idir iarratais. De réir doiciméadú FrankenPHP ní mór staid a bhaineann le hiarratas a athshocrú d'aon ghnó dá bhrí sin.

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