Aktuális helyzet: PHP2Shell. Két kritikus PHP-rés (CVSS 9,2) lehetővé teszi kártékony kód futtatását bejelentkezés nélkül. Javítások 2026. 10. 21. óta.Mi a teendő most →

A frissítés után: a PHP-FPM és az összes worker újraindítása

A PHP-frissítés csak akkor hat, ha az összes PHP-folyamatot újraindították. Itt a parancsok PHP-FPM-hez, Apache-hoz, LiteSpeedhez és konténerekhez, és az újraindítás ellenőrzése.

Állapot 4 perc olvasási időPHP2Shell

Röviden: A PHP-frissítés után újra kell indítania a PHP-FPM-et és az összes többi szolgáltatást, amely PHP-t tölt be. Az új fájlok a merevlemezen nem elegendők, amíg régi PHP-folyamatok futnak a memóriában. Csak az újraindítás után dolgozik a szerver a PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 vagy a szolgáltatója backportjának javított kódjával.

Miért kell újraindítania a PHP-FPM-et

Egy csomagfrissítés a merevlemezen lévő fájlokat cseréli le. A már futó folyamatok azonban a régi programkódot már betöltötték a memóriába, és azzal dolgoznak tovább. A PHP-FPM, az Apache mod_php-val vagy a LiteSpeed a workereit gyakran napokig életben tartja.

A PHP2Shell esetében ez különösen fontos. A CVE-2026-109619 rés éppen azon az állapoton múlik, amely a kérések között ugyanabban a workerben megmarad. Egy régi kódú worker sebezhető marad, bármelyik verzió van a lemezen. A php.net szerint ezért minden workert és folyamatot újra kell indítani.

Egyes csomagkezelők a frissítéskor automatikusan újraindítják a szolgáltatásokat, mások nem. Ne bízzon ebben, hanem ellenőrizze az eredményt.

Egy tipikus kép a mindennapokból: a csomagkezelő azt jelenti, hogy „PHP frissítve“, a monitoring nem mutat hibát, a weboldal működik. Ennek ellenére a régi workerek továbbra is minden kérést kiszolgálnak, mert senki sem indította újra a szolgáltatást. Kívülről ez az állapot nem ismerhető fel. Ezért minden frissítéshez hozzátartozik a folyamatok indulási idejének ellenőrzése.

Mely szolgáltatások töltenek be PHP-t?

Üzemmód Mit kell újraindítani Tipikus parancs (a nevek disztribúciónként eltérnek)
PHP-FPM minden FPM-szolgáltatást, telepített verziónként systemctl restart php8.3-fpm vagy systemctl restart php-fpm
Apache mod_php-val az Apache-ot systemctl restart apache2 vagy systemctl restart httpd
php-cgi a hívó webszervert, illetve a FastCGI-wrappert a beállítástól függően
LiteSpeed a LiteSpeedet és az lsphp-folyamatokat a LiteSpeed-kezelőfelületen vagy szolgáltatásán keresztül
FrankenPHP a FrankenPHP szolgáltatást vagy konténert systemctl restart frankenphp vagy a konténer újralétrehozása
Docker, Kubernetes a konténereket új image-ből újra létrehozni lásd PHP javítása Docker-konténerekben

A mod_php esetében: a frissítés magát az Apache-ot érinti, mert a PHP minden Apache-folyamatban benne van. Hogy miért különösen kényes ez az üzemmód, azt a Miért a mod_php viseli a legnagyobb kockázatot oldal írja le. A LiteSpeedről a LiteSpeed és LSAPI oldalon talál részleteket.

A PHP-FPM újraindítása: a parancsok

Először keresse meg a szerveren az összes PHP-szolgáltatást. A Plesk, a cPanel és más felületek saját PHP-szolgáltatásokat hoznak magukkal saját nevekkel; a lista ezeket is megmutatja.

systemctl list-units --type=service | grep -i -E "php|lsws|litespeed|frankenphp|apache2|httpd"

Ezután minden megtalált PHP-szolgáltatást indítson újra, ne csak az elsőt:

sudo systemctl restart php8.3-fpm
sudo systemctl restart php8.2-fpm      # ha telepítve van egy második ág
sudo systemctl restart apache2         # mod_php esetén; RHEL-család: httpd

A restartot ajánljuk a reload helyett. A reloadnál a főfolyamat megmarad; ez konfigurációs változtatásokhoz való. Egy biztonsági frissítés után biztosra akar menni, hogy minden folyamat új.

Fontos

Ha emellett átmeneti intézkedéseket is beállított, például session.upload_progress.enabled=0 értéket vagy rögzített memóriahatárokat, ezek is csak az újraindítás után érvényesülnek. Egy újraindítás mindkettőt elvégzi egy lépésben.

Az ellenőrzés, hogy nem fut már régi worker

Vesse össze a folyamatok indulási idejét a frissítés időpontjával. Minden parancs kizárólag olvasó.

ps -o pid,lstart,cmd -C php-fpm8.3     # unter RHEL: -C php-fpm
systemctl status php8.3-fpm            # a „Active: … since …“ sor
needrestart -r l                       # Debian/Ubuntu, ha telepítve van

Ha egy folyamat régebbi a frissítésnél, azt nem fogta el az újraindítás. Gyakori okok az elfelejtett második PHP-ág, egy hosting-panelből származó saját pool-szolgáltatás, vagy egy konténer, amelyet csak újraindítottak, ahelyett hogy az új image-ből hoztak volna létre. Hogy a helyes verzió fut-e, azt a PHP-verzió és javítási állapot helyes ellenőrzése oldal mutatja.

Az újraindítás dokumentálása

Szerverenként jegyezze fel a frissítés és az újraindítás időpontját. Ez a pillanat választja el azt az időt, amikor a szerver sebezhető volt, attól, ami utána jön. Egy későbbi nyomellenőrzéshez, a biztosítóknak és egy lehetséges GDPR szerinti bejelentéshez ez a legfontosabb vonatkoztatási pont. Őrizze meg emellett a szervernaplókat október 20-tól, ahogy a szakmai sajtó ajánlja.

Sok weboldalt kiszolgáló szervereken érdemes egy rövid táblázatot vezetni: szerver, szolgáltatás, PHP-verzió, csomagverzió, az újraindítás időpontja és a személy, aki újraindított. Így gyorsan feltűnnek a lefedettség hézagai, például egy elfelejtett pool, vagy egy tesztrendszer, amely senki jegyzékén nem szerepelt.

Hogyan segít konkrétan a PHP SOS?

A PHP-javítási szolgáltatás keretében a frissítést és az újraindítást összefüggő folyamatként vesszük át:

  • A szolgáltatások megállapítása: Megtalálunk minden PHP-t betöltő folyamatot, a hosting-panelekből és konténerekből származókat is.
  • Ellenőrzött újraindítás, Önnel egyeztetve megfelelő időpontban, a folyamatban lévő rendelésekre vagy űrlapokra tekintettel.
  • Utóellenőrzés, hogy egyetlen folyamat sem régebbi a frissítésnél, és a weboldal normálisan válaszol.
  • Jegyzőkönyvezés: verziók, csomagállapotok és újraindítási időpontok szerverenként.

Gyakori kérdések

Elég a systemctl reload a restart helyett?

A PHP2Shell esetében a restartot ajánljuk. A reload a workereket többnyire újraindítja ugyan, de a főfolyamat tovább futhat. A restarttal biztos lehet benne, hogy nem marad folyamat régi kóddal. A rövid megszakítással szemben világos igazolás áll.

Újra kell indítanom az egész szervert a PHP-frissítés után?

Általában nem. Elég újraindítani az összes szolgáltatást, amely PHP-t tölt be: a PHP-FPM-et, mod_php esetén az Apache-ot, a LiteSpeedet, a FrankenPHP-t vagy az érintett konténereket. Az egész szerver újraindítása az egyszerű változat, ha bizonytalan abban, mely szolgáltatások használnak PHP-t.

Újraindítja a tárhelyszolgáltatóm automatikusan a PHP-t a frissítés után?

Ez a szolgáltatótól függ. Kérdezzen rá konkrétan, hogy a javítás után újraindították-e az összes PHP-folyamatot, és kérje ennek írásos megerősítését.

Források

Azonnali kapcsolat

Minden óra számít. Írjon nekünk most.

Ismertesse röviden a rendszert, a PHP-verziót és a megfigyelését. Jelentkezünk, tisztázzuk a helyzetet, és távolról dolgozunk, amíg az incidens le nem zárul és dokumentálva nem lesz.

Azonnali segítség