Stručně: Aktualizace PHP v cPanelu po PHP2Shell má tři kroky: dostat všechny balíčky ea-php a případně alt-php na opravený stav, úplně restartovat PHP-FPM a Apache a zdokumentovat stav balíčků. Zákazníci na serveru nejdůležitější přechodné hodnoty sami nastavit nemohou, musí to udělat správce WHM.
Výchozí situace na serverech cPanel
PHP2Shell zahrnuje zranitelnosti CVE-2026-109618 a CVE-2026-109619 v samotném PHP. Obě umožňují spuštění škodlivého kódu bez přihlášení a jsou hodnoceny CVSS v4.0 9,2. Postiženy jsou PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP a LiteSpeed. Projekt PHP vydal dne 21. 10. 2026 verze 8.5.12, 8.4.27, 8.3.36 a 8.2.35.
cPanel dodává PHP nikoli jako jediný balíček, ale přes EasyApache 4 s jednou sadou balíčků pro každou verzi, například ea-php83 nebo ea-php84. Na některých serverech k tomu přistupují balíčky operačního systému a na CloudLinuxu verze alt-php. Každý zdroj má vlastní stav. Úplný obraz získáte, teprve když zkontrolujete všechny tři.
Aktualizace PHP v cPanelu: zkontrolovat stav a přiřazení
Začněte inventurou. Následující příkazy jen čtou a nic nemění. Cesty a názvy balíčků jsou příklady a podle instalace se mohou lišit.
# Nainstalované verze PHP podle API WHM
whmapi1 php_get_installed_versions
# Verze každé instalace ea-php
for p in /opt/cpanel/ea-php*/root/usr/bin/php; do echo "$p"; "$p" -v | head -1; done
# Stav balíčků (systémy založené na RPM, příklad)
rpm -qa | grep -E '^ea-php[0-9]+-php-(cli|fpm|common)' | sort
V MultiPHP Manageru uvidíte, která doména používá jakou verzi a zda je zapnuto PHP-FPM. Zaznamenejte si verze, které jsou nainstalovány, ale nejsou přiřazeny žádné doméně. I ty je třeba aktualizovat nebo odstranit.
Správně zařadit backporty
Jako u jiných poskytovatelů platí: zobrazené číslo verze není jediným měřítkem. Pokud je oprava dodána jako backport, může číslo zůstat beze změny. Zkontrolujte proto navíc changelog balíčku a oznámení poskytovatele.
# Prohledat changelog balíčku podle čísel CVE (příklad)
rpm -q --changelog ea-php84-php-cli | grep -iE 'CVE-2026-1096(18|19)'
Pokud se žádný záznam nenajde, neznamená to automaticky, že oprava chybí. Znamená to ale, že před označením serveru za záplatovaný potřebujete písemné potvrzení. Jak verze správně číst, popisuje stránka Kontrola verze PHP a stavu záplat.
Aktualizace, restart a kontrola
Aktualizaci nasadíte ve WHM přes systémovou aktualizaci nebo správu balíčků. Poté restartujte všechny procesy PHP. Nové soubory samy nestačí, dokud staré procesy běží v paměti.
# Restartovat služby PHP-FPM všech verzí (skript cPanelu)
/scripts/restartsrv_apache_php_fpm
# Úplně restartovat Apache
/scripts/restartsrv_httpd
# Zkontrolovat čas spuštění procesů PHP
ps -eo pid,lstart,cmd | grep -E 'php-fpm|lsphp|php-cgi' | grep -v grep
Každý proces PHP by měl mít čas spuštění po aktualizaci. Pokud tomu tak není, ukončete ho cíleně přes příslušnou službu. Při více serverech se vyplatí krátký protokol pro každý stroj, který pak můžete použít jako doklad.
Aktualizace CMS přes nástroje cPanelu, například WP Toolkit, zranitelnost PHP neuzavře. Je užitečná, ale nenahrazuje aktualizaci PHP ani restart.
Nastavit přechodné hodnoty centrálně
Pokud verze ještě není opravena, doporučuje php.net přechodná opatření, která neposkytují úplnou ochranu. V cPanelu je nastavíte v MultiPHP INI Editoru v režimu pro administrátory nebo přímo v php.ini příslušné verze ea-php. Hodnoty v .user.ini zákaznických účtů pro session.upload_progress.enabled nestačí.
; serverová php.ini dotčené verze (příklad)
session.upload_progress.enabled = 0
post_max_size = 32M
upload_max_filesize = 24M
Bez funkce nahrávání souborů uvádí php.net post_max_size = 8M. Na PHP 8.5 přibývá fatal_error_backtraces=0. Poté znovu restartujte všechny workery. Limit paměti nastavte přes cgroups, například limity CloudLinuxu, nikoli přes RLIMIT_AS nebo RLIMIT_DATA. Další podrobnosti najdete na stránce Okamžitá opatření bez záplaty.
Odpovědnost mezi provozovatelem serveru a majiteli účtů
Na serveru cPanel s mnoha účty nese správce WHM odpovědnost za PHP, služby a konfiguraci celého serveru. Majitelé jednotlivých účtů odpovídají za své aplikace, pluginy a přístupové údaje. Informujte majitele účtů, kdy a jak se záplatovalo, a doporučte jim zkontrolovat své aplikace, zda nevykazují nápadnosti. Jak situace vypadá z pohledu zákazníka, popisuje stránka Sdílený hosting.
Uchovejte logy od 20. 10. 2026. Záplata neodstraní škodlivý software, který byl zavlečen dříve.
Jako doklad stačí jednoduchý protokol pro každý server: datum a čas aktualizace, seznam balíčků ea-php a alt-php s verzí před aktualizací a po ní, seznam procesů s časy spuštění po restartu a případně potvrzení dodavatele balíčků k backportům. Protokol uložte mimo server. Později poslouží jako doklad vůči zákazníkům, pojišťovnám nebo kontrolorům a usnadní další nouzovou aktualizaci, protože kroky jsou již popsány. Pokud provozujete více serverů cPanel, vyplatí se zabalit čtecí příkazy z této stránky do malého skriptu, který poběží na všech strojích stejně a výsledky shromáždí. Odchylky mezi servery, například zapomenutou verzi PHP, tak poznáte na první pohled.
Jak konkrétně pomáhá PHP SOS?
- Zinventarizujeme balíčky ea-php, alt-php a systémové balíčky a přiřadíme všechny účty k jejich verzi PHP.
- Prostřednictvím naší služby záplatování PHP aktualizujeme, restartujeme všechny služby a stav doložíme seznamy balíčků a časy procesů.
- Kde je to nutné, nastavíme přechodné hodnoty serverově a tak, aby je nešlo přepsat.
- Zkontrolujeme účty na typické stopy kompromitace a při nálezu zahájíme odstranění malwaru.
- Poté snížíme počet verzí PHP a zpevníme konfiguraci.
Časté dotazy
Kde ve WHM vidím, která doména používá jakou verzi PHP?
V MultiPHP Manageru ve WHM vidíte u každé domény přiřazenou verzi a to, zda je aktivní PHP-FPM. Pro úplný seznam se hodí navíc dotaz z příkazové řádky. Poznamenejte si i verze, které nejsou přiřazeny žádné doméně.
Smí zákazník cPanelu nastavit přechodné hodnoty sám v .user.ini?
U session.upload_progress.enabled php.net výslovně uvádí, že .user.ini a ini_set() nestačí. Hodnota patří do php.ini, poolu FPM nebo konfigurace serveru. To může udělat jen správce serveru.
Stačí graceful restart Apache?
U PHP-FPM se musí restartovat samotné služby FPM, reload Apache je neobnoví. U handlerů PHP založených na Apache je bezpečnou cestou úplný restart. Poté zkontrolujte čas spuštění všech procesů PHP.
Jak je to s CloudLinux a alt-php?
Na serverech CloudLinux běží weby částečně na vlastních balíčcích alt-php místo ea-php. Ty mají vlastní stav balíčků a je třeba je zkontrolovat a aktualizovat zvlášť.