Stručně: Po aktualizaci PHP musíte restartovat PHP-FPM a všechny další služby, které PHP načítají. Nové soubory na disku nestačí, dokud staré procesy PHP běží v paměti. Teprve po restartu pracuje server s opraveným kódem PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 nebo s backportem vašeho poskytovatele.
Proč musíte PHP-FPM restartovat
Aktualizace balíčku nahradí soubory na disku. Procesy, které už běží, ale starý programový kód načetly do paměti a pracují s ním dál. PHP-FPM, Apache s mod_php nebo LiteSpeed udržují své workery často při životě celé dny.
U PHP2Shell je to obzvlášť důležité. Zranitelnost CVE-2026-109619 závisí právě na stavu, který mezi požadavky ve stejném workeru přetrvává. Worker se starým kódem zůstává zranitelný, ať je na disku jakákoli verze. Podle php.net je proto nutné restartovat všechny workery a procesy.
Někteří správci balíčků služby při aktualizaci restartují automaticky, jiní ne. Nespoléhejte na to, ale zkontrolujte výsledek.
Typický obraz z praxe: správa balíčků hlásí „PHP aktualizováno“, monitoring neukazuje chyby, web běží. Přesto staří workeři dál obsluhují každý požadavek, protože nikdo službu nerestartoval. Zvenčí tento stav nepoznáte. Proto ke každé aktualizaci patří kontrola dob spuštění procesů.
Které služby načítají PHP?
| Provozní režim | Co restartovat | Typický příkaz (názvy se liší podle distribuce) |
|---|---|---|
| PHP-FPM | každou službu FPM, pro každou nainstalovanou verzi | systemctl restart php8.3-fpm nebo systemctl restart php-fpm |
| Apache s mod_php | Apache | systemctl restart apache2 nebo systemctl restart httpd |
| php-cgi | volající webový server, resp. wrapper FastCGI | podle nastavení |
| LiteSpeed | LiteSpeed a procesy lsphp | přes správu LiteSpeed nebo jeho službu |
| FrankenPHP | službu FrankenPHP nebo kontejner | systemctl restart frankenphp nebo kontejner znovu vytvořit |
| Docker, Kubernetes | kontejnery znovu vytvořit z nového image | viz Záplatování PHP v kontejnerech Dockeru |
U mod_php platí: aktualizace se týká samotného Apache, protože PHP je v každém procesu Apache. Proč je tento provozní režim obzvlášť citlivý, najdete na stránce Proč nese mod_php nejvyšší riziko. K LiteSpeed najdete podrobnosti na stránce LiteSpeed a LSAPI.
Restart PHP-FPM: příkazy
Nejprve najděte na serveru všechny služby PHP. Plesk, cPanel a další rozhraní přinášejí vlastní služby PHP s vlastními názvy; seznam je zobrazí také.
systemctl list-units --type=service | grep -i -E "php|lsws|litespeed|frankenphp|apache2|httpd"
Poté restartujte každou nalezenou službu PHP, ne jen první:
sudo systemctl restart php8.3-fpm
sudo systemctl restart php8.2-fpm # pokud je nainstalována druhá větev
sudo systemctl restart apache2 # u mod_php; rodina RHEL: httpd
Doporučujeme restart místo reload. Při reloadu hlavní proces zůstává; je určen pro změny konfigurace. Po bezpečnostní aktualizaci chcete mít jistotu, že je každý proces nový.
Pokud jste navíc nastavili přechodná opatření jako session.upload_progress.enabled=0 nebo pevné limity paměti, působí rovněž až po restartu. Restart zařídí obojí jedním krokem.
Ověření, že neběží žádný starý worker
Porovnejte dobu spuštění procesů s časem aktualizace. Všechny příkazy jsou čistě čtecí.
ps -o pid,lstart,cmd -C php-fpm8.3 # unter RHEL: -C php-fpm
systemctl status php8.3-fpm # řádek „Active: … since …“
needrestart -r l # Debian/Ubuntu, pokud je nainstalován
Pokud je některý proces starší než aktualizace, nebyl zachycen. Častými příčinami jsou zapomenutá druhá větev PHP, vlastní služba poolu z hostingového panelu nebo kontejner, který byl jen restartován, místo aby byl vytvořen z nového image. Zda běží správná verze, ukáže stránka Jak správně ověřit verzi PHP a stav záplaty.
Zdokumentování restartu
U každého serveru si poznamenejte čas aktualizace a restartu. Tento okamžik odděluje dobu, kdy byl server zranitelný, od doby poté. Pro pozdější kontrolu stop, pro pojišťovnu a pro možné hlášení podle GDPR je to nejdůležitější referenční bod. Uchovejte také logy serveru od 20. října, jak radí odborný tisk.
Na serverech s mnoha weby se vyplatí krátká tabulka: server, služba, verze PHP, verze balíčku, čas restartu a osoba, která restartovala. Mezery v pokrytí se tak rychle projeví, například přehlédnutý pool nebo testovací systém, o kterém nikdo nevěděl.
Jak konkrétně pomáhá PHP SOS?
V rámci služby záplatování PHP přebíráme aktualizaci a restart jako souvislý postup:
- Zjistit služby: Najdeme všechny procesy, které načítají PHP, i z hostingových panelů a kontejnerů.
- Kontrolovaně restartovat, po dohodě s vámi v vhodný okamžik a s ohledem na probíhající objednávky nebo formuláře.
- Ověřit, že žádný proces není starší než aktualizace a web odpovídá normálně.
- Protokolovat: verze, stavy balíčků a časy restartů pro každý server.
Časté dotazy
Stačí systemctl reload místo restart?
Pro PHP2Shell doporučujeme restart. Reload sice workery většinou restartuje, hlavní proces ale může běžet dál. S restartem máte jistotu, že nezůstane žádný proces se starým kódem. Krátkému přerušení stojí naproti jasný doklad.
Musím po aktualizaci PHP restartovat celý server?
Zpravidla ne. Stačí restartovat všechny služby, které PHP načítají: PHP-FPM, Apache u mod_php, LiteSpeed, FrankenPHP nebo dotčené kontejnery. Restart celého serveru je jednoduchá varianta, pokud si nejste jisti, které služby PHP používají.
Restartuje můj poskytovatel hostingu PHP po aktualizaci automaticky?
To závisí na poskytovateli. Zeptejte se konkrétně, zda byly po záplatě restartovány všechny procesy PHP, a nechte si to písemně potvrdit.