Trumpai: saugiausia senas PHP versijas išjungti trimis etapais: nustatyti naudojimą, užblokuoti versiją ir stebėti, tik tada pašalinti. Plesk tvarkyklę (handler) pirmiausia galima išjungti, kad jos nebebūtų galima pasirinkti, o vėliau pašalinti skiltyje Updates ir komponentai. Kiekviena pašalinta versija yra viena mažiau, kurią per kitą pažeidžiamumą, panašų į PHP2Shell, reikės pataisyti ir paleisti iš naujo.
Kodėl sutvarkyti būtent dabar?
Savaitė po PHP2Shell daugeliui administratorių parodė, kiek PHP versijų įdiegta jų serveriuose. Kiekvieną reikėjo patikrinti, kiekvienai reikėjo atnaujinimo ar pereinamųjų priemonių, kiekvieną tarnybą paleisti iš naujo. PHP 8.1 ir senesnėms yra tik minimalūs šaltinio kodo atgaliniai perkėlimai, o PHP 8.2 palaikymas baigiasi 2026-12-31.
Su šia patirtimi, dar šviežia atmintyje, tai tinkamas metas sutvarkyti. Kaip apskritai rasti visus diegimus, aprašo straipsnis Kelios PHP versijos viename serveryje. Čia kalbama apie kitą žingsnį: kontroliuojamą išjungimą.
1 etapas: nustatyti naudojimą
Prieš ką nors išjungiant reikia žinoti, kas versiją naudoja. Svetainės yra akivaizdi dalis. Mažiau matomi subdomenai, bandomieji diegimai, cron užduotys, skriptai ir skydelio komponentai.
Plesk komanda plesk bin php_handler --list išvardija visas užregistruotas tvarkykles. Su --get-usage, pagal dokumentaciją, Plesk parodo, kurie domenai naudoja tam tikrą tvarkyklę. Abi komandos nieko nekeičia.
# Plesk: visos tvarkyklės ir domenai, kurie naudoja tvarkyklę
plesk bin php_handler --list
plesk bin php_handler --get-usage -id <handler-id>
# Bendrai: cron užduotys, kurios kreipiasi į tam tikrą PHP versiją
grep -rE "php(7|8\.0|8\.1)" /etc/crontab /etc/cron.d /var/spool/cron 2>/dev/null
Papildomai patikrinkite paveiktų svetainių prieigos žurnalus: bandomasis diegimas, kuris keletą mėnesių negavo nė vienos užklausos, yra kandidatas šalinimui, o ne migravimui. Kiekvienai senai versijai užsirašykite, kas ją naudoja ir kodėl.
Be to, pasiklauskite žmonių, kurie dirba su svetainėmis. Redakcijos, agentūros ir padaliniai dažnai žino procesus, kurių nėra jokiame sąraše: metinį eksportą buhalterijai, formą mugei, sąsają su prekių apskaitos sistema. Kas ten priklauso nuo senos versijos, kitaip išaiškėja tik tada, kai jos pritrūksta.
2 etapas: užblokuoti ir stebėti
Tarpinis žingsnis neleidžia versijos priskirti iš naujo, nedelsiant jos neištrinant. Plesk tam yra galimybė išjungti atskiras tvarkykles. Pagal Plesk dokumentaciją išjungtos tvarkyklės svetainės PHP nustatymuose pasirinkti nebegalima; versija lieka įdiegta. Komandinėje eilutėje tai daroma komanda plesk bin php_handler --disable -id <handler-id>.
Domenus, kurie dar naudoja seną versiją, iš anksto, suderinę su atsakingais asmenimis, perjunkite į palaikomą versiją. Kaip tai atrodo svetainės operatoriaus požiūriu, aprašo straipsnis PHP versijos keitimas hostingo kliento zonoje. Tinkamos tvarkyklės pasirinkimą paaiškina straipsnis Plesk: PHP tvarkyklių supratimas.
Stebėjimo laikotarpiu stebėkite klaidų pranešimus žurnaluose, neatsiradusius cron užduočių rezultatus ir naudotojų atsiliepimus. Kituose skydeliuose funkcijos vadinasi kitaip; ten žiūrėkite gamintojo dokumentaciją.
Stebėjimo laikotarpio pabaigą nustatykite kaip datą ir įvardykite, kas po to patvirtina pašalinimą. Kitaip iš tarpinio žingsnio tampa nuolatinė būsena ir sena versija vis tiek lieka serveryje.
3 etapas: pašalinti
Tik kai stebėjimo laikotarpis praėjo be pastebėjimų, versiją pašalinkite visiškai. Plesk pagal dokumentaciją tai daroma skiltyse Tools & Settings, Updates, Add/Remove Components, srityje Web hosting prie PHP interpretatoriaus versijų. Įdiegtos versijos ten pažymėtos ir jas galima pasirinkti pašalinimui.
Serveriuose be skydelio šią užduotį atlieka paketų valdymas. Prieš tai išsaugokite versijos konfigūraciją, pavyzdžiui, /etc/php/7.4/ sistemose Debian ir Ubuntu, kad avariniu atveju galėtumėte atsekti, kokie nustatymai galiojo.
# Išsaugoti konfigūraciją, tada pašalinti šakos paketus (pavyzdys Debian/Ubuntu, PHP 7.4)
tar czf /root/php74-konfiguration.tar.gz /etc/php/7.4/
apt remove 'php7.4*'
Po pašalinimo verta patikrinti. Plesk dokumentacija rekomenduoja plesk bin php_handler --reread, kad po PHP vykdomųjų failų pakeitimų tvarkyklių informacija būtų perskaityta iš naujo. Papildomai patikrinkite, ar aptarnavimo planai dar nenurodo pašalintos versijos.
Tipinės kliūtys
| Kliūtis | Kaip ją atpažinti | Kas padeda |
|---|---|---|
| Skydelio komponentas priklauso nuo versijos | Skydelis šalinant praneša apie priklausomybę | Pirmiausia perjungti komponentą arba palikti versiją |
| Aptarnavimo planas nurodo seną versiją | Naujos svetainės gauna seną versiją arba klaidos pranešimą | Pakeisti planą, tada pašalinti versiją |
| Cron užduotis kreipiasi fiksuotu keliu | Skriptas po pašalinimo nebeveikia | Pakeisti kelią į palaikomą versiją |
| Programa neveikia su nauja versija | Klaida po perjungimo klaidų žurnale | Atnaujinti arba migruoti programą |
Jei programos negalima perkelti į palaikomą versiją, senos versijos išjungimas nebėra konfigūracijos klausimas, o migracijos projektas. Pasenusių šakų riziką aprašo vadovas PHP End of Life: pasenusių versijų rizika.
Kitas kandidatas jau žinomas
Sutvarkymas nėra vienkartinis veiksmas. Jau 2026-12-31 PHP 8.2 iškrenta iš PHP projekto palaikymo. Kas dabar šalina versijas iki 8.1 imtinai, tuo pat metu turėtų nuspręsti, kas toliau bus su 8.2. Kitaip tas pats žaidimas po kelių savaičių prasidės iš naujo.
Serveriui pasiteisino paprasta taisyklė: siūlomos tik tos šakos, kurias palaiko PHP projektas. Kiekviena šaka diegiant gauna datą, kada ji bus tikrinama iš naujo, atsižvelgiant į palaikymo pabaigą php.net. Šio ciklo pagrindus paaiškina puslapis PHP versijos ir leidimų ciklas.
Kas kaip hostingo teikėjas ar agentūra serveryje turi klientų, juos turėtų informuoti anksti. Pranešimas su data, prašymas perjungti ir pagalbos pasiūlymas apsaugo nuo svetainių nutrūkimo nustatytą dieną. Klientai, kurių programa neseka iš paskos, taip laiku supranta, kad laukia atnaujinimas ar migracija, ir gali tam planuoti.
Kaip PHP SOS padeda konkrečiai?
- Nustatome, kurios svetainės, cron užduotys ir skydelio komponentai kokią PHP versiją naudoja.
- Suderinę perjungiame domenus į palaikomas versijas ir užblokuojame senas tvarkykles.
- Po stebėjimo laikotarpio kontroliuojamai pašaliname senas versijas ir patikriname rezultatą.
- Kur programos neseka iš paskos, planuojame PHP 8.1 ir senesnių versijų migraciją.
Dažni klausimai
Kodėl turėčiau pašalinti nenaudojamas PHP versijas?
Kiekvieną įdiegtą versiją per kiekvieną pažeidžiamumą reikia patikrinti, atnaujinti ir paleisti iš naujo. Senos šakos, tokios kaip PHP 8.1 ir senesnės, iš PHP projekto atnaujinimų nebegauna. Nenaudojamos versijos suteikia tik riziką ir darbo.
Kuo skiriasi išjungimas nuo pašalinimo?
Išjungus versija lieka įdiegta, bet jos nebegalima pasirinkti iš naujo. Pašalinus ji išimama iš serverio. Išjungimas yra saugus tarpinis žingsnis, norint pamatyti, ar kažko netrūksta.
Ar PHP versijos pašalinimas gali sutrikdyti skydelio funkcijas?
Taip. Kai kurie skydelio komponentai, pavyzdžiui, žiniatinklio paštas ar valdymo įrankiai, priklauso nuo tam tikros PHP versijos. Tokias priklausomybes išsiaiškinkite prieš šalindami; skydelis paprastai į tai atkreipia dėmesį.
Kiek turėtų trukti stebėjimo laikotarpis?
Tiek, kad visi reguliarūs procesai bent kartą būtų įvykę, taigi ir mėnesinės cron užduotys bei eksportai. Trukmę nustatykite kartu su padaliniais.