Na kratko: PHP End of Life pomeni: projekt PHP za to vejo ne dobavlja več varnostnih posodobitev. PHP2Shell posledice jasno pokaže, saj za PHP 8.1 in starejše uradnega popravka ni, PHP 8.2 pa se konča 31. 12. 2026. Kdor danes teče na stari veji, naj prehod načrtuje zdaj, ne šele ob naslednji nujni situaciji.
Kaj pomeni PHP End of Life
Vsako vejo PHP, na primer 8.2 ali 8.3, projekt PHP vzdržuje le omejen čas. Najprej sledijo odpravljanje napak in varnostne posodobitve, pozneje samo še varnostne posodobitve. Nato se podpora povsem konča. Aktualna obdobja objavlja php.net na strani o podprtih različicah.
Po koncu podpore programska oprema sicer še teče. Če pa postane znana nova ranljivost, popravka s strani projekta PHP ni več. Strežnik ostane ranljiv, dokler nekdo drug ne popravi ali dokler ne preidete na podprto vejo.
Za vodstvo in vodje IT je to predvsem vprašanje načrtovanja. Migracijo je mogoče v miru pripraviti. Pod časovnim pritiskom po kritičnem obvestilu postane draga in tvegana.
Kaj PHP2Shell pokaže o zastarelih različicah
Projekt PHP je 21. 10. 2026 objavil popravke za dve kritični ranljivosti, CVE-2026-109618 in CVE-2026-109619. Obe omogočata izvajanje škodljive kode na daljavo brez prijave in imata po CVSS v4.0 oceno 9,2. Po navedbah strokovnega tiska so prizadete skoraj vse različice vse do PHP 5.4.
| Veja | Stanje po projektu PHP | Popravek za PHP2Shell |
|---|---|---|
| PHP 8.5 | podprta | 8.5.12 |
| PHP 8.4 | podprta | 8.4.27 |
| PHP 8.3 | podprta | 8.3.36 |
| PHP 8.2 | podprta do 31. 12. 2026 | 8.2.35 |
| PHP 8.1, 8.0, 7.4 | brez uradnih posodobitev | samo minimalni backporti izvorne kode |
| PHP 7.3 in starejši | brez uradnih posodobitev | brez backporta s strani projekta PHP |
Za 8.1 in starejše tako ostane samo pot prek backportov distribucij ali ponudnikov gostovanja. Ti pogosto še naprej prikazujejo staro številko različice, čeprav so popravljeni. Ali je backport nameščen, lahko zavezujoče potrdi samo ponudnik. Podrobnosti so na strani PHP 8.1 in starejši: kaj velja zdaj, celoten pregled pa na strani Katere različice PHP so prizadete?.
PHP 8.2 je popravek za PHP2Shell še prejel, vendar 31. 12. 2026 doseže konec podpore. Kdor zdaj prehaja z 8.1, naj takoj cilja na novejšo vejo.
Tveganja zastarelih različic PHP na kratko
Varnostno tveganje je v ospredju, a ni edino. Zastarele različice PHP prinesejo še druge težave:
- Brez popravkov za nove ranljivosti: Vsaka prihodnja šibkost ostane odprta ali je odvisna od backportov tretjih oseb.
- Zastarele knjižnice: Aktualni paketi predpostavljajo novejše veje PHP. Varnostnih popravkov v knjižnicah potem ni več mogoče namestiti, kot kaže vodnik composer audit.
- Odvisnost od ponudnika: Ponudniki gostovanja za stare različice včasih zaračunavajo doplačila ali ustavijo delovanje. Rok tedaj določi ponudnik, ne vi.
- Težave z dokazovanjem: Nasproti zavarovalnicam, naročnikom ali pri auditih je nepodprto različico težko utemeljiti. Ali iz tega izhajajo pogodbene ali pravne posledice, razjasnite z zavarovalnico ali odvetnikom.
- Naraščajoči stroški migracije: Večja ko je razdalja do aktualne različice, več kode je treba prilagoditi.
Posebej pogosto so prizadeti starejši sistemi spletnih trgovin in dolgo nedotaknjeni individualni razvoji. Značilen primer je Shopware 5, ki pogosto še teče na starejših vejah PHP.
Popis: katere različice PHP tečejo pri vas
Prvi korak je popolna slika. Na številnih strežnikih vzporedno teče več različic PHP, na primer za staro spletno stran, ki je nihče več nima na očeh. Ti ukazi samo berejo:
# Različica ukazne vrstice
php -v
# Nameščene različice v Debianu/Ubuntuju
ls /etc/php/
# Nameščene različice v Pleskju
ls /opt/plesk/php/ 2>/dev/null
# Tekoči procesi PHP z različico v imenu
ps -eo user,cmd | grep -E "[p]hp-fpm|[p]hp[0-9.]*-cgi|[l]sphp" | sort | uniq -c
Za vsako spletno stran zabeležite: domeno, različico PHP, način delovanja, CMS z različico, odgovorno osebo. Ta seznam je hkrati podlaga za vaš načrt za nujne primere. Pri shared hostingu različice običajno najdete v meniju za stranke pri ponudniku gostovanja.
Načrtovanje migracije: kako postopate
Migracija na podprto vejo praviloma sledi istim korakom, neodvisno od sistema:
- Določite cilj: izberite vejo, ki jo po php.net podpirajo še čim dlje in ki po sistemskih zahtevah proizvajalca ustreza vašemu CMS-ju.
- Preverite združljivost: CMS, razširitve, teme in lastna koda. Podatki so na uradni strani posameznega proizvajalca.
- Postavite staging: kopija spletne strani z novo različico PHP, vključno s podatkovno zbirko.
- Preizkusite: vse pomembne postopke, od kontaktnega obrazca do postopka naročila, poleg tega dnevnik napak glede opozoril.
- Preklopite in znova zaženite: zamenjajte različico, znova zaženite vse procese PHP, preverite delovanje in dnevnik napak.
Načrtujte realistično. Majhna spletna stran z aktualnim CMS-jem je pogosto hitro preklopljena. Trgovina, ki je rasla leta, z veliko razširitvami in lastno kodo, pa lahko zahteva prilagoditev kode in razširitev, vse do prehoda na novo glavno različico sistema trgovine. Zgodaj razjasnite, kdo odloča znotraj podjetja, kakšen proračun je na voljo in ali je treba vključiti zunanje razvijalce.
Določite tudi, kako boste v prihodnje spremljali konce podpore. Fiksen termin v letu, ko seznam svojih spletnih strani uskladite s podatki na php.net, prepreči, da bi isto ozko grlo čez dve leti znova nastalo.
Do preklopa uporabite vmesne ukrepe php.net, na primer session.upload_progress.enabled=0 v konfiguraciji strežnika. Niso popolna zaščita, tveganje pa znižajo.
Kako PHP SOS pomaga konkretno?
- Zajamemo vse različice PHP, načine delovanja in aplikacije na vaših strežnikih.
- Tveganje ocenimo za vsako spletno stran in z vami določimo vrstni red ter ciljno različico.
- Do migracije uvedemo vmesne ukrepe in pri ponudniku pridobimo potrditve glede backportov.
- Migriramo prek okolja staging in dokumentiramo preizkus ter preklop.
Potek opisuje storitev PHP 8.1 in starejši: migracija na podprto različico.
Pogosta vprašanja
Kdaj se konča podpora za PHP 8.2?
PHP 8.2 31. 12. 2026 doseže konec podpore s strani projekta PHP. Popravek za PHP2Shell je ta veja še prejela z različico 8.2.35, za poznejše ranljivosti po tem datumu uradne posodobitve ni pričakovati.
Ali PHP 8.1 dobi popravek za PHP2Shell?
Projekt PHP za 8.1 in starejše uradnih posodobitev nima več. Obstajajo samo minimalni backporti izvorne kode za 7.4, 8.0 in 8.1. Ali in kako jih vaš ponudnik gostovanja ali distribucija namesti, morate povprašati pri ponudniku.
Ali je stara različica PHP z backporti ponudnika gostovanja varna?
Backporti lahko zaprejo konkretne ranljivosti, vendar ne nadomestijo podprte veje. Odvisni so od ponudnika, pogosto pridejo pozneje in ne pokrijejo vsake ranljivosti. Kot trajna rešitev zato niso primerni.
Kako vem, ali moj CMS teče z novo različico PHP?
Preverite sistemske zahteve na uradni strani proizvajalca in preizkusite v okolju staging. Pri razširitvah in temah velja enako, saj so pogosto prava ozka grla.