Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Viac verzií PHP na jednom serveri: každú zaplátať zvlášť

Na mnohých serveroch beží popri sebe tri, štyri alebo viac inštalácií PHP. Po PHP2Shell treba každú nájsť, aktualizovať a reštartovať.

Stav 5 min čítaniaHosting a distribúcie

Stručne: Ak na serveri beží viac verzií PHP, treba po PHP2Shell každú skontrolovať, aktualizovať a reštartovať zvlášť. Typické zdroje sú operačný systém, hostingové panely ako Plesk alebo cPanel, externé zdroje ako sury.org alebo Remi, CloudLinux, LiteSpeed a verzie zostavené vlastnoručne. Až úplný zoznam z balíkov, súborov a bežiacich procesov ukáže, či sa naozaj nezabudlo na žiadnu verziu.

Zabudnutá verzia

Server, ktorý beží niekoľko rokov, zbiera verzie PHP ako povala staré kusy nábytku. Panel priniesol tri vetvy, pre jedného zákazníka pribudla staršia verzia z externého zdroja, operačný systém má svoju vlastnú. Každá z nich bola raz nainštalovaná z dobrého dôvodu. Len dnes už nikto nevie, ktorá sa ešte používa.

Po PHP2Shell je to presne problém. Opravy vyšli 21. októbra 2026 pre PHP 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Každá inštalácia na serveri ich však dostáva vlastnou cestou, od vlastného správcu balíkov a vo vlastnom čase. Pre PHP 8.1 a staršie existujú len minimálne backporty zdrojového kódu. Kto aktualizuje len hlavnú verziu, nechá ostatné otvorené.

Odkiaľ sa berie toľko verzií

Nasledujúci prehľad uvádza typické zdroje a príklady ciest. Presné cesty sa líšia podľa verzie a distribúcie.

Zdroj Príklad cesty Kto dodáva záplatu
Operačný systém Debian/Ubuntu /usr/bin/php8.3, /etc/php/8.3/ distribúcia
Operačný systém rodiny RHEL /usr/bin/php, /etc/php-fpm.d/ distribúcia
Plesk /opt/plesk/php/8.3/ Plesk
cPanel (EasyApache 4) /opt/cpanel/ea-php83/ cPanel
CloudLinux alt-php /opt/alt/php83/ CloudLinux
Remi Software Collection /opt/remi/php83/ Remi
sury.org /usr/bin/php8.3 ako pri systéme sury.org
LiteSpeed /usr/local/lsws/lsphp83/ LiteSpeed resp. zdroj balíkov
Zostavené vlastnoručne často /usr/local/bin/php vy sami
Kontajner v obraze vydavateľ obrazu, nové zostavenie robíte vy

Obzvlášť zákerné sú balíky zo sury.org, pretože používajú rovnaké cesty ako distribúcia. Či php8.3 pochádza z Debianu alebo zo sury.org, ukáže až zdroj balíka. Zvláštnosti opisujú články Repozitár sury.org a Repozitár Remi. Ako Plesk spravuje svoje verzie, opisuje stránka Server Plesk: kontrola a záplatovanie verzií PHP.

Nájdenie všetkých inštalácií PHP

Spoľahlivý zoznam vznikne z troch pohľadov. Príkazy sú výlučne čítacie a podľa servera môžu bežať dlhší čas.

# 1. Balíky: čo pozná správa balíkov
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. Súbory: spustiteľné binárky PHP, aj mimo správy balíkov
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: čo naozaj práve beží, s časom spustenia
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"

Porovnajte tieto tri zoznamy. Súbor bez balíka naznačuje vlastnoručne zostavenú alebo ručne skopírovanú verziu. Proces bez zodpovedajúceho súboru môže poukazovať na vymazanú, ale stále bežiacu inštaláciu. Pri Apache navyše skontrolujte, či je načítaný modul PHP, napríklad pomocou apache2ctl -M alebo httpd -M. Kontajnery a pody Kubernetes sa v týchto zoznamoch objavia len sčasti a vyžadujú vlastnú kontrolu obrazov.

Každú verziu zaplátať zvlášť

Ak má každá inštalácia vo vašom zozname riadok, nasleduje pre každú ten istý postup:

  1. Objasnite zodpovednosť: Pochádza záplata od distribúcie, od panela, z externého zdroja alebo od vás samotných?
  2. Zhodnoťte stav: oficiálna opravená verzia, potvrdený backport, nevyjasnené alebo otvorené.
  3. Aktualizujte: cestou príslušného zdroja, nie cez iný.
  4. Reštartujte: službu tejto verzie, nielen hlavnú službu. Pri mod_php webový server. Podrobnosti sú v časti Reštart PHP-FPM a všetkých workerov.
  5. Skontrolujte: porovnajte čas spustenia procesov s časom aktualizácie.
  6. Zdokumentujte: verzia, stav balíka, doklad, čas reštartu.

Pre verzie, pre ktoré záplata neexistuje, platia do migrácie prechodné opatrenia z php.net. Nastavte ich pre každú verziu osobitne, pretože každá inštalácia má vlastný súbor php.ini a vlastné pooly.

Dôležité

Nezabúdajte na príkazový riadok. Cronjoby a skripty často bežia s inou verziou PHP než web. Aj táto verzia musí byť na opravenom stave, hoci nespracúva žiadne webové požiadavky.

Ktorú verziu používa príkazový riadok a ktorú kontajner?

Dve oblasti sa pri hľadaní najčastejšie prepadnú sitom. Prvou je príkazový riadok. V Debiane a Ubuntu rozhoduje systém alternatív, ktorá binárka sa skrýva za príkazom php. Príkaz update-alternatives --display php ukáže, ktoré verzie sú zaregistrované a ktorá práve platí. Cronjoby, ktoré volajú pevnú cestu, ako /usr/bin/php7.4, však toto nastavenie obchádzajú. Preto sa oplatí pozrieť do crontabov všetkých používateľov a do konfigurácie panelov, ktoré vytvárajú vlastné cronjoby.

Druhou oblasťou sú kontajnery. Kontajner Docker na serveri prináša vlastnú verziu PHP, ktorá sa neobjaví v žiadnom zozname balíkov hostiteľa. docker ps ukáže bežiace kontajnery; či sa v nich nachádza PHP a v ktorej verzii, prezradí pohľad do obrazu alebo php -v v kontajneri. Záplata sa tam nerobí na hostiteľovi, ale novým zostavením obrazu a výmenou kontajnera.

Menej je bezpečnejšie

Najlepšia kontrola je tá, ktorú nie je treba robiť. Každá nainštalovaná verzia PHP zdvojnásobuje námahu pri ďalšej zraniteľnosti. Po PHP2Shell sa preto oplatí jasné pravidlo: každá verzia na serveri potrebuje účel a zodpovednú osobu. Čo ich nemá, najprv sa deaktivuje a po období pozorovania odstráni. Viac v článku Vypnutie starých verzií PHP v hostingovom paneli.

Ako konkrétne pomáha PHP SOS?

  • Vytvoríme pre vaše servery úplný zoznam všetkých inštalácií PHP z balíkov, súborov, procesov a kontajnerov.
  • Pri každej verzii objasníme pôvod, zodpovednosť a stav záplat.
  • V rámci služby záplatovania PHP aktualizujeme každú verziu, reštartujeme každú službu a doložíme stav.
  • Spolu s vami určíme, ktoré verzie ostanú, a ostatné kontrolovane odstránime.

Časté otázky

Prečo na mojom serveri beží viac verzií PHP?

Časté dôvody sú hostingové panely, ktoré prinášajú vlastné zostavenia PHP, externé zdroje ako sury.org alebo Remi pre novšie verzie a staršie aplikácie, ktoré potrebujú konkrétnu verziu. Často k tomu pribúda ešte verzia PHP operačného systému.

Je nebezpečná verzia PHP, ktorú nepoužíva žiadny web?

Pokiaľ je nainštalovaná a aktívna ako služba, môže byť dosiahnuteľná, napríklad cez testovaciu doménu, zabudnutý pool alebo cronjob. Navyše ju možno neskôr omylom priradiť nejakému webu. Nepotrebné verzie by ste mali odstrániť.

Ako nájdem všetky inštalácie PHP na serveri s Linuxom?

Skombinujte tri pohľady: nainštalované balíky, spustiteľné súbory PHP v súborovom systéme a bežiace procesy. Zoznam je úplný, až keď všetky tri ukazujú ten istý obraz.

Musím po aktualizácii reštartovať každú verziu zvlášť?

Áno. Každá verzia má spravidla vlastnú službu FPM, LiteSpeed vlastné procesy lsphp a mod_php žije v procese Apache. Reštart hlavnej služby ostatné neobnoví.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc