Trenutno stanje: PHP2Shell. Dve kritični ranljivosti PHP (CVSS 9,2) omogočata izvedbo škodljive kode brez prijave. Popravki od 21. 10. 2026.Kaj je zdaj treba storiti →

Več različic PHP na enem strežniku: vsako popravite posebej

Na mnogih strežnikih teče vzporedno tri, štiri ali več namestitev PHP. Po PHP2Shell je treba vsako najti, posodobiti in znova zagnati.

Stanje 5 min branjaGostovanje in distribucije

Na kratko: Če na strežniku teče več različic PHP, je treba po PHP2Shell vsako posebej preveriti, posodobiti in znova zagnati. Tipični viri so operacijski sistem, nadzorne plošče za gostovanje, kot sta Plesk ali cPanel, tretji viri, kot sta sury.org ali Remi, CloudLinux, LiteSpeed in sami prevedene različice. Šele popoln seznam iz paketov, datotek in tekočih procesov pokaže, ali ni bila res spregledana nobena različica.

Pozabljena različica

Strežnik, ki teče že nekaj let, zbira različice PHP kot podstrešje staro pohištvo. Nadzorna plošča je prinesla tri veje, za eno stranko je iz tretjega vira prišla starejša različica, operacijski sistem ima svojo. Vsaka je bila nekoč nameščena iz dobrega razloga. Danes pa nihče več ne ve, katera se še potrebuje.

Po PHP2Shell je prav to težava. Popravki so izšli 21. oktobra 2026 za PHP 8.5.12, 8.4.27, 8.3.36 in 8.2.35. Vsaka namestitev na strežniku pa jih dobi po svoji poti, od svojega vzdrževalca paketa in ob svojem času. Za PHP 8.1 in starejše obstajajo samo minimalni povratni popravki v izvorni kodi. Kdor posodobi samo glavno različico, druge pusti odprte.

Od kod toliko različic

Spodnji pregled navaja tipične vire in primere poti. Natančne poti se razlikujejo glede na različico in distribucijo.

Vir Primer poti Kdo dobavi popravek
Operacijski sistem Debian/Ubuntu /usr/bin/php8.3, /etc/php/8.3/ Distribucija
Operacijski sistem družine RHEL /usr/bin/php, /etc/php-fpm.d/ Distribucija
Plesk /opt/plesk/php/8.3/ Plesk
cPanel (EasyApache 4) /opt/cpanel/ea-php83/ cPanel
CloudLinux alt-php /opt/alt/php83/ CloudLinux
Zbirka programov Remi /opt/remi/php83/ Remi
sury.org /usr/bin/php8.3 kot pri sistemu sury.org
LiteSpeed /usr/local/lsws/lsphp83/ LiteSpeed oz. vir paketov
Sami prevedeno pogosto /usr/local/bin/php Vi sami
Vsebniki v sliki Izdajatelj slike, ponovna gradnja je vaša

Posebej zahrbtni so paketi sury.org, ker uporabljajo enake poti kot distribucija. Ali php8.3 izvira iz Debiana ali iz sury.org, pokaže šele vir paketa. Posebnosti opisujeta prispevka Repozitorij sury.org in Repozitorij Remi. Kako Plesk upravlja svoje različice, opisuje stran Strežnik Plesk: preverjanje in popravljanje različic PHP.

Poiščite vse namestitve PHP

Zanesljiv seznam nastane iz treh pogledov. Ukazi so zgolj za branje in lahko na nekaterih strežnikih tečejo nekaj časa.

# 1. Paketi: kar pozna upravljanje paketov
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. Datoteke: izvršljive binarne datoteke PHP, tudi zunaj upravljanja paketov
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. Procesi: kar dejansko teče, s časom zagona
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"

Tri sezname primerjajte. Datoteka brez paketa kaže na sami prevedeno ali ročno kopirano različico. Proces brez ustrezne datoteke lahko kaže na izbrisano, a še tekočo namestitev. Pri Apacheu dodatno preverite, ali je naložen modul PHP, na primer z apache2ctl -M ali httpd -M. Vsebniki in podi Kubernetes se na teh seznamih pojavijo le delno in potrebujejo lasten pregled slik.

Vsako različico popravite posebej

Ko ima vsaka namestitev vrstico na vašem seznamu, za vsako sledi isti postopek:

  1. Razjasnite odgovornost: Ali popravek prihaja od distribucije, nadzorne plošče, tretjega vira ali od vas samih?
  2. Ocenite stanje: uradna popravljena različica, potrjen backport, nerazjasnjeno ali odprto.
  3. Posodobite: po poti zadevnega vira, ne po drugi.
  4. Znova zaženite: storitev te različice, ne samo glavne storitve. Pri mod_php spletni strežnik. Podrobnosti so na strani Ponovni zagon PHP-FPM in vseh workerjev.
  5. Preverite: čas zagona procesov primerjajte s časom posodobitve.
  6. Dokumentirajte: različica, stanje paketa, dokaz, čas ponovnega zagona.

Za različice, za katere popravka ni, do migracije veljajo prehodni ukrepi s php.net. Nastavite jih za vsako različico posebej, saj ima vsaka namestitev svoj php.ini in svoje poole.

Pomembno

Ne pozabite ukazne vrstice. Cronjobi in skripti pogosto tečejo z drugo različico PHP kot spletna stran. Tudi ta različica mora biti na popravljenem stanju, čeprav ne obdeluje spletnih zahtev.

Katero različico uporablja ukazna vrstica, katero vsebnik?

Dve področji pri iskanju zelo pogosto zdrsneta skozi sito. Prvo je ukazna vrstica. Pri Debianu in Ubuntuju sistem alternativ določa, katera binarna datoteka stoji za ukazom php. update-alternatives --display php pokaže, katere različice so registrirane in katera trenutno velja. Cronjobi, ki kličejo fiksno pot, kot je /usr/bin/php7.4, to nastavitev vendarle zaobidejo. Zato se splača pogledati v crontabe vseh uporabnikov in v konfiguracijo nadzornih plošč, ki ustvarjajo lastne cronjobe.

Drugo področje so vsebniki. Vsebnik Docker na strežniku prinaša lastno različico PHP, ki se ne pojavi v nobenem seznamu paketov gostitelja. docker ps prikaže tekoče vsebnike; ali je v njem PHP in v kateri različici, pokaže pogled v sliko ali php -v v vsebniku. Popravek tam ne poteka na gostitelju, temveč z ponovno gradnjo slike in zamenjavo vsebnika.

Manj je varneje

Najboljše preverjanje je tisto, ki ga ni treba narediti. Vsaka nameščena različica PHP podvoji trud ob naslednji ranljivosti. Po PHP2Shell se zato splača jasno pravilo: vsaka različica na strežniku potrebuje namen in odgovorno osebo. Kar ju nima, se najprej deaktivira in po obdobju opazovanja odstrani. Več v prispevku Izklop starih različic PHP v nadzorni plošči.

Kako PHP SOS pomaga konkretno?

  • Za vaše strežnike pripravimo popoln seznam vseh namestitev PHP iz paketov, datotek, procesov in vsebnikov.
  • Za vsako različico razjasnimo izvor, odgovornost in stanje popravkov.
  • V okviru storitve popravljanja PHP posodobimo vsako različico, znova zaženemo vsako storitev in dokažemo stanje.
  • Skupaj z vami določimo, katere različice ostanejo, preostale pa nadzorovano odstranimo.

Pogosta vprašanja

Zakaj na mojem strežniku teče več različic PHP?

Pogosti razlogi so nadzorne plošče za gostovanje, ki prinašajo lastne gradnje PHP, tretji viri, kot sta sury.org ali Remi, za novejše različice in starejše aplikacije, ki zahtevajo določeno različico. Pogosto je zraven še različica PHP operacijskega sistema.

Ali je različica PHP, ki je nobena spletna stran ne uporablja, nevarna?

Dokler je nameščena in aktivna kot storitev, je lahko dosegljiva, na primer prek testne domene, pozabljenega poola ali cronjoba. Poleg tega jo je pozneje mogoče po pomoti dodeliti spletni strani. Nepotrebne različice odstranite.

Kako najdem vse namestitve PHP na strežniku Linux?

Združite tri poglede: nameščene pakete, izvršljive datoteke PHP v datotečnem sistemu in tekoče procese. Šele ko vsi trije dajo isto sliko, je seznam popoln.

Ali moram po posodobitvi vsako različico posebej znova zagnati?

Da. Vsaka različica ima praviloma lastno storitev FPM, LiteSpeed lastne procese lsphp, mod_php živi v procesu Apache. Ponovni zagon glavne storitve ostalih ne obnovi.

Viri

Takojšnji stik

Vsaka ura šteje. Pišite nam zdaj.

Na kratko opišite sistem, različico PHP in opažanje. Odzovemo se, razjasnimo stanje in delamo na daljavo, dokler incident ni zaključen in dokumentiran.

Takojšnja pomoč