Aktuální situace: PHP2Shell. Dvě kritické zranitelnosti PHP (CVSS 9.2) umožňují spustit škodlivý kód bez přihlášení. Záplaty od 21. 10. 2026.Co nyní udělat →

Více verzí PHP na jednom serveru: záplatovat každou zvlášť

Na mnoha serverech běží vedle sebe tři, čtyři i více instalací PHP. Po PHP2Shell je nutné každou najít, aktualizovat a restartovat.

Stav 5 min čteníHosting a distribuce

Stručně: Běží-li na serveru více verzí PHP, je nutné po PHP2Shell každou zvlášť zkontrolovat, aktualizovat a restartovat. Typickými zdroji jsou operační systém, hostingové panely jako Plesk nebo cPanel, zdroje třetích stran jako sury.org nebo Remi, CloudLinux, LiteSpeed a samostatně kompilované verze. Teprve úplný seznam sestavený z balíčků, souborů a běžících procesů ukáže, zda nebyla opravdu přehlédnuta žádná verze.

Zapomenutá verze

Server, který běží několik let, sbírá verze PHP jako půda starý nábytek. Panel přinesl tři větve, pro jednoho zákazníka přibyla starší verze ze zdroje třetí strany, operační systém má svou vlastní. Každá z nich byla jednou nainstalována z dobrého důvodu. Jen dnes už nikdo neví, která se ještě používá.

Po PHP2Shell je to právě problém. Opravy vyšly 21. října 2026 pro PHP 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Každá instalace na serveru je ale dostává vlastní cestou, od vlastního správce balíčků a v jiný čas. Pro PHP 8.1 a starší existují jen minimální backporty zdrojového kódu. Kdo aktualizuje jen hlavní verzi, nechá ostatní otevřené.

Odkud se berou ty mnohé verze

Následující přehled uvádí typické zdroje a příklady cest. Přesné cesty se liší podle verze a distribuce.

Zdroj Příklad cesty Kdo dodává záplatu
Operační systém Debian/Ubuntu /usr/bin/php8.3, /etc/php/8.3/ distribuce
Operační systém, rodina RHEL /usr/bin/php, /etc/php-fpm.d/ distribuce
Plesk /opt/plesk/php/8.3/ Plesk
cPanel (EasyApache 4) /opt/cpanel/ea-php83/ cPanel
CloudLinux alt-php /opt/alt/php83/ CloudLinux
Software Collection od Remi /opt/remi/php83/ Remi
sury.org /usr/bin/php8.3 jako u systému sury.org
LiteSpeed /usr/local/lsws/lsphp83/ LiteSpeed, resp. zdroj balíčků
Samostatně kompilováno často /usr/local/bin/php vy sami
Kontejner v image vydavatel image, nový build zajišťujete vy

Zvlášť záludné jsou balíčky ze sury.org, protože používají stejné cesty jako distribuce. Zda php8.3 pochází z Debianu, nebo ze sury.org, ukáže teprve zdroj balíčku. Zvláštnosti popisují články Repozitář sury.org a Repozitář Remi. Jak Plesk spravuje své verze, popisuje stránka Servery Plesk: kontrola a záplatování verzí PHP.

Najít všechny instalace PHP

Spolehlivý seznam vznikne ze tří pohledů. Příkazy jsou čistě čtecí a podle serveru mohou chvíli běžet.

# 1. Balíčky: co zná správa balíčků
dpkg-query -W -f='${Package}\t${Version}\n' '*php*' 2>/dev/null | grep -E "fpm|cli|cgi|mod-php|lsphp"
rpm -qa 2>/dev/null | grep -iE "php.*(fpm|cli|cgi|litespeed)|^php-[0-9]|^ea-php|^alt-php" | sort

# 2. Soubory: spustitelné binárky PHP, i mimo správu balíčků
find / -xdev -type f \( -name 'php' -o -name 'php[0-9]*' -o -name 'php-fpm*' -o -name 'php-cgi*' -o -name 'lsphp*' \) -perm -u+x 2>/dev/null

# 3. Procesy: co skutečně běží právě teď, s časem spuštění
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"

Porovnejte tyto tři seznamy. Soubor bez balíčku naznačuje samostatně kompilovanou nebo ručně zkopírovanou verzi. Proces bez odpovídajícího souboru může ukazovat na smazanou, ale stále běžící instalaci. U Apache zkontrolujte navíc, zda je načten modul PHP, například pomocí apache2ctl -M nebo httpd -M. Kontejnery a pody Kubernetes se v těchto seznamech objeví jen částečně a vyžadují vlastní kontrolu imagí.

Každou verzi zaplatovat zvlášť

Má-li každá instalace v seznamu řádek, následuje pro každou stejný postup:

  1. Ujasnit odpovědnost: Pochází záplata od distribuce, od panelu, ze zdroje třetí strany, nebo od vás samotných?
  2. Posoudit stav: oficiální opravená verze, potvrzený backport, nevyjasněno, nebo otevřeno.
  3. Aktualizovat: cestou příslušného zdroje, ne jinou.
  4. Restartovat: službu této verze, nejen hlavní službu. U mod_php webový server. Podrobnosti najdete v článku Restart PHP-FPM a všech workerů.
  5. Zkontrolovat: porovnat čas spuštění procesů s okamžikem aktualizace.
  6. Zdokumentovat: verze, stav balíčku, doklad, čas restartu.

Pro verze, pro které záplata neexistuje, platí do migrace přechodná opatření od php.net. Nastavte je pro každou verzi zvlášť, protože každá instalace má vlastní php.ini a vlastní pooly.

Důležité

Nezapomeňte na příkazovou řádku. Cron úlohy a skripty často běží s jinou verzí PHP než web. I tato verze musí být na opraveném stavu, i když nezpracovává webové požadavky.

Kterou verzi používá příkazová řádka a kterou kontejner?

Dvě oblasti při hledání nejčastěji propadnou sítem. První je příkazová řádka. U Debianu a Ubuntu rozhoduje systém alternativ, která binárka stojí za příkazem php. update-alternatives --display php ukáže, které verze jsou zaregistrovány a která právě platí. Cron úlohy, které volají pevnou cestu jako /usr/bin/php7.4, však toto nastavení obcházejí. Proto stojí za to nahlédnout do crontabů všech uživatelů a do konfigurace panelů, které zakládají vlastní cron úlohy.

Druhou oblastí jsou kontejnery. Kontejner Docker na serveru přináší vlastní verzi PHP, která se v žádném seznamu balíčků hostitele neobjeví. docker ps zobrazí běžící kontejnery; zda v nich PHP je a v jaké verzi, prozradí pohled do image nebo php -v v kontejneru. Záplata se tam neprovádí na hostiteli, ale novým sestavením image a výměnou kontejneru.

Méně je bezpečnější

Nejlepší kontrola je ta, kterou není nutné dělat. Každá nainstalovaná verze PHP zdvojnásobuje práci při další zranitelnosti. Po PHP2Shell se proto vyplatí jasné pravidlo: každá verze na serveru potřebuje účel a odpovědnou osobu. Co je nemá, se nejprve deaktivuje a po době sledování odstraní. Více v článku Vypněte staré verze PHP v hostingovém panelu.

Jak konkrétně pomáhá PHP SOS?

  • Pro vaše servery vytvoříme úplný seznam všech instalací PHP z balíčků, souborů, procesů a kontejnerů.
  • U každé verze objasníme původ, odpovědnost a stav záplat.
  • V rámci PHP Patch Service aktualizujeme každou verzi, restartujeme každou službu a doložíme stav.
  • Společně s vámi stanovíme, které verze zůstanou, a ostatní kontrolovaně odstraníme.

Časté dotazy

Proč na mém serveru běží více verzí PHP?

Častými důvody jsou hostingové panely, které přinášejí vlastní buildy PHP, zdroje třetích stran jako sury.org nebo Remi pro novější verze a starší aplikace, které vyžadují určitou verzi. Často k tomu přibývá ještě verze PHP z operačního systému.

Je nebezpečná verze PHP, kterou žádný web nepoužívá?

Dokud je nainstalovaná a aktivní jako služba, může být dosažitelná, například přes testovací doménu, zapomenutý pool nebo cron úlohu. Navíc může být později omylem přiřazena nějakému webu. Nepotřebné verze byste měli odstranit.

Jak najdu všechny instalace PHP na serveru s Linuxem?

Spojte tři pohledy: nainstalované balíčky, spustitelné soubory PHP v souborovém systému a běžící procesy. Teprve když všechny tři dávají stejný obraz, je seznam úplný.

Musím po aktualizaci restartovat každou verzi zvlášť?

Ano. Každá verze má zpravidla vlastní službu FPM, LiteSpeed vlastní procesy lsphp, mod_php žije v procesu Apache. Restart hlavní služby ostatní neobnoví.

Zdroje

Okamžitý kontakt

Každá hodina se počítá. Napište nám hned.

Stručně popište systém, verzi PHP a pozorování. Ozveme se, vyjasníme situaci a budeme pracovat na dálku, dokud nebude incident uzavřen a zdokumentován.

Okamžitá pomoc