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 →

Izklop starih različic PHP v nadzorni plošči za gostovanje

PHP2Shell je dobra priložnost, da se znebite starih različic PHP. V treh fazah postopajte tako, da nobena spletna stran in noben cronjob ne odpove neopazno.

Stanje 5 min branjaGostovanje in distribucije

Na kratko: Stare različice PHP najvarneje deaktivirate v treh fazah: ugotovite uporabo, različico zaklenite in opazujte, šele nato jo odstranite. V Pleskju je mogoče handler najprej deaktivirati, tako da ga ni več mogoče izbrati, in ga pozneje odstraniti pod Updates in komponente. Vsaka odstranjena različica je ena manj, ki jo morate ob naslednji ranljivosti, kot je PHP2Shell, popraviti in znova zagnati.

Zakaj počistiti ravno zdaj?

Teden po PHP2Shell je mnogim skrbnikom pokazal, koliko različic PHP je nameščenih na njihovih strežnikih. Vsako je bilo treba preveriti, vsaka je potrebovala posodobitev ali prehodne ukrepe, vsaka storitev ponovni zagon. Za PHP 8.1 in starejše obstajajo samo minimalni povratni popravki v izvorni kodi, za PHP 8.2 se podpora konča 31. 12. 2026.

S to izkušnjo, še sveže v spominu, je pravi čas za čiščenje. Kako sploh najdete vse namestitve, opisuje prispevek Več različic PHP na enem strežniku. Tukaj gre za naslednji korak: nadzorovan izklop.

Faza 1: ugotovite uporabo

Preden karkoli izklopite, morate vedeti, kdo različico uporablja. Spletne strani so očitni del. Manj vidne so poddomene, testne namestitve, cronjobi, skripti in komponente nadzorne plošče.

V Pleskju ukaz plesk bin php_handler --list navede vse registrirane handlerje. Z --get-usage Plesk po dokumentaciji pokaže, katere domene uporabljajo določen handler. Noben od obeh ukazov ničesar ne spremeni.

# Plesk: vsi handlerji in domene, ki handler uporabljajo
plesk bin php_handler --list
plesk bin php_handler --get-usage -id <handler-id>

# Splošno: cronjobi, ki kličejo določeno različico PHP
grep -rE "php(7|8\.0|8\.1)" /etc/crontab /etc/cron.d /var/spool/cron 2>/dev/null

Dodatno preverite dnevnike dostopov prizadetih spletnih strani: testna namestitev, ki mesecev ni prejela zahteve, je kandidat za odstranitev, ne za migracijo. Za vsako staro različico zabeležite, kdo jo uporablja in zakaj.

Vprašajte tudi ljudi, ki s spletnimi stranmi delajo. Uredništva, agencije in strokovni oddelki pogosto poznajo postopke, ki ne stojijo na nobenem seznamu: letni izvoz za računovodstvo, obrazec za sejem, vmesnik do sistema za upravljanje blaga. Kar je tam vezano na staro različico, sicer opazimo šele, ko manjka.

Faza 2: zaklenite in opazujte

Vmesni korak prepreči, da bi bila različica na novo dodeljena, ne da bi jo takoj izbrisali. V Pleskju je za to na voljo možnost deaktivacije posameznih handlerjev. Po dokumentaciji Plesk deaktiviranega handlerja v nastavitvah PHP spletne strani ni več mogoče izbrati; različica ostane nameščena. V ukazni vrstici to storite z plesk bin php_handler --disable -id <handler-id>.

Domene, ki staro različico še uporabljajo, prej v dogovoru z odgovornimi preklopite na podprto različico. Kako to izgleda z vidika upravljavca spletne strani, opisuje prispevek Sprememba različice PHP v območju za stranke pri gostovanju. Izbiro ustreznega handlerja pojasnjuje prispevek Plesk: razumevanje handlerjev PHP.

V obdobju opazovanja pazite na sporočila o napakah v dnevnikih, izostanek rezultatov cronjobov in odzive uporabnikov. V drugih nadzornih ploščah se funkcije imenujejo drugače; tam preverite dokumentacijo proizvajalca.

Nasvet

Konec obdobja opazovanja določite kot rok in imenujte, kdo po njem odobri odstranitev. Sicer vmesni korak postane trajno stanje in stara različica vendarle ostane na strežniku.

Faza 3: odstranitev

Šele ko obdobje opazovanja mine brez posebnosti, različico odstranite v celoti. V Pleskju se to po dokumentaciji naredi pod Tools & Settings, Updates, Add/Remove Components, v razdelku Web hosting pri različicah interpreterja PHP. Nameščene različice so tam označene in jih je mogoče izbrati za odstranitev.

Na strežnikih brez nadzorne plošče to nalogo prevzame upravljanje paketov. Prej zavarujte konfiguracijo različice, na primer /etc/php/7.4/ pri Debianu in Ubuntuju, da lahko v sili ugotovite, katere nastavitve so veljale.

# Zavarujte konfiguracijo, nato odstranite pakete veje (primer Debian/Ubuntu, PHP 7.4)
tar czf /root/php74-konfiguration.tar.gz /etc/php/7.4/
apt remove 'php7.4*'

Po odstranitvi se splača preveriti. V Pleskju dokumentacija priporoča plesk bin php_handler --reread, da se po spremembah binarnih datotek PHP ponovno preberejo podatki o handlerjih. Preverite tudi, ali servisni paketi še kažejo na odstranjeno različico.

Tipični kamni spotike

Kamen spotike Po čem ga prepoznate Kaj pomaga
Komponenta nadzorne plošče je vezana na različico Nadzorna plošča pri odstranjevanju javi odvisnost Komponento najprej preklopite ali različico obdržite
Servisni paket kaže na staro različico Nove spletne strani dobijo staro različico ali sporočilo o napaki Paket prilagodite, nato odstranite različico
Cronjob kliče fiksno pot Skript po odstranitvi odpove Pot spremenite na podprto različico
Aplikacija ne teče na novi različici Napaka po preklopu v dnevniku napak Aplikacijo posodobite ali migrirajte

Če aplikacije ni mogoče dvigniti na podprto različico, izklop stare različice ni več vprašanje konfiguracije, ampak projekt migracije. Tveganja zastarelih vej opisuje vodnik Konec življenjske dobe PHP: tveganja zastarelih različic.

Naslednji kandidat je že znan

Čiščenje ni enkratno dejanje. Že 31. 12. 2026 PHP 8.2 izpade iz podpore projekta PHP. Kdor zdaj odstrani različice do 8.1, naj hkrati določi, kako bo z 8.2. Sicer se enaka igra čez nekaj tednov začne znova.

Za strežnik se je obnesalo preprosto pravilo: ponujajo se samo veje, ki jih projekt PHP podpira. Vsaka veja ob vzpostavitvi dobi datum, ob katerem se ponovno preveri, usmerjen v konec podpore na php.net. Ozadje tega cikla pojasnjuje stran Različice PHP in cikel izdaj.

Kdor ima kot ponudnik gostovanja ali agencija stranke na strežniku, naj jih obvesti zgodaj. Obvestilo z datumom, prošnja za preklop in ponudba pomoči preprečijo, da bi na rok odpovedale spletne strani. Stranke, katerih aplikacija ne gre zraven, tako pravočasno spoznajo, da je na vrsti posodobitev ali migracija, in lahko to načrtujejo.

Kako PHP SOS pomaga konkretno?

  • Ugotovimo, katere spletne strani, cronjobi in komponente nadzorne plošče uporabljajo katero različico PHP.
  • Domene v dogovoru preklopimo na podprte različice in zaklenemo stare handlerje.
  • Po obdobju opazovanja stare različice nadzorovano odstranimo in preverimo rezultat.
  • Kjer aplikacije ne gredo zraven, načrtujemo migracijo s PHP 8.1 in starejših.

Pogosta vprašanja

Zakaj naj neuporabljene različice PHP odstranim?

Vsako nameščeno različico je treba ob vsaki ranljivosti preveriti, posodobiti in znova zagnati. Stare veje, kot je PHP 8.1 in starejše, od projekta PHP ne prejemajo več posodobitev. Neuporabljene različice prinašajo samo tveganje in trud.

Kakšna je razlika med deaktivacijo in odstranitvijo?

Pri deaktivaciji različica ostane nameščena, vendar je ni več mogoče na novo izbrati. Pri odstranitvi jo s strežnika odstranite. Deaktivacija je varen vmesni korak, da se vidi, ali kaj manjka.

Ali lahko odstranitev različice PHP moti funkcije nadzorne plošče?

Da. Nekatere komponente nadzorne plošče, na primer spletna pošta ali orodja za upravljanje, so vezane na določeno različico PHP. Take odvisnosti razjasnite pred odstranitvijo, nadzorna plošča nanje praviloma opozori.

Kako dolgo naj traja obdobje opazovanja?

Dovolj dolgo, da so se vsi redni postopki izvedli vsaj enkrat, torej tudi mesečni cronjobi in izvozi. Trajanje določite s strokovnimi oddelki.

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č