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 →

Posodobitev PHP v sistemu Windows

V sistemu Windows ni samodejne posodobitve PHP. Kdor izbere pravo različico, preveri prenos in znova zažene vse procese, popravek PHP2Shell čisto spravi na vsak računalnik.

Stanje 5 min branjaGostovanje in distribucije

Na kratko: V sistemu Windows PHP posodobite ročno: z php.net prenesite odpravljeno različico, izberite isto varianto (Thread Safe ali Non Thread Safe) in arhitekturo, prenos preverite z SHA-256, prevzemite php.ini in razširitve, preklopite pot in znova zaženite vse procese PHP. Posodobitev je posebej nujna, če Apache v sistemu Windows nalaga PHP kot modul, saj ekipa PHP ta način delovanja pri PHP2Shell uvršča najvišje.

Kje vse se PHP skriva na računalnikih Windows

Strežnikov Windows s PHP je več, kot mnogi mislijo. Redko je to velika spletna stran, pogosteje so intranet, strokovne aplikacije ali orodja, ki jih je pred leti nekdo postavil. Delovanje pod IIS je podrobno opisano na strani Zavarovanje PHP v sistemu Windows in IIS. Ta prispevek obravnava samo posodobitev in primere zunaj IIS.

Tipična mesta so Apache za Windows s PHP kot modulom, razvijalski paketi, kot so XAMPP, WampServer ali Laragon, ki so pristali na strežniku, lastne kopije PHP v strokovnih aplikacijah in skripti PHP v načrtovanih opravilih. Naslednji ukazi PowerShell samo berejo in pomagajo pri iskanju:

# Poiščite vse php.exe na pogonu C: (na velikih pogonih traja nekaj časa)
Get-ChildItem -Path C:\ -Filter php.exe -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime

# Kateri php.exe je v iskalni poti?
where.exe php

# Tekoči procesi PHP in Apache s potjo in časom zagona
Get-Process php*, httpd -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime, Path

# Različica in naložena konfiguracija ene namestitve (pot kot primer)
& "C:\PHP\8.4\php.exe" -v
& "C:\PHP\8.4\php.exe" --ini

Pomembno: če PHP teče kot modul Apache, lastnega procesa PHP ni. PHP je tedaj v procesu httpd.exe. Kdor išče samo procese php-cgi, te namestitve spregleda.

Zlahka se pozabijo tudi načrtovana opravila, ki kličejo skripte PHP, na primer za uvoze, poročila ali usklajevanje podatkov. Pogosto uporabljajo lasten, starejši php.exe. Pri PHP2Shell veljajo za manj ogrožena, ker ukazna vrstica po dosedanjih navedbah php.net ne sodi med prizadete načine delovanja; pri zamenjavi morajo kljub temu kazati na novo pot, sicer ostane stara namestitev v uporabi in se nikoli ne odstrani.

# Načrtovana opravila, ki kličejo PHP
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'php' } |
  Select-Object TaskName, TaskPath, @{n='Programm';e={$_.Actions.Execute}}

Posebna tema so razvijalski računalniki. XAMPP in podobni paketi zaženejo Apache s PHP kot modulom in so pogosto dosegljivi v celotnem omrežju podjetja. Tudi tam je treba PHP posodobiti, spletni strežnik pa naj posluša samo na lastnem računalniku.

Thread Safe ali Non Thread Safe: prava varianta

php.net vsako različico za Windows ponuja v več variantah. Pri zamenjavi velja: ista varianta in arhitektura kot doslej, sicer se spletni strežnik ali razširitve ne naložijo.

Lastnost Možnosti Kdaj katera
Varnost niti NTS (Non Thread Safe), TS (Thread Safe) po php.net NTS za FastCGI, na primer IIS, in ukazno vrstico; TS za PHP kot modul v Apacheu
Arhitektura x64, x86 php.net priporoča x64
Prevajalnik VS16, VS17 potrebuje Visual C++ Redistributable za Visual Studio 2015 do 2022

Za PHP 8.5 je php.net ob pregledu 25. 10. 2026 navajal različico 8.5.12 z dne 21. 10. 2026, kot arhiv ZIP v vseh štirih kombinacijah. Preostale podprte veje izberete na isti strani. Odpravljene so 8.5.12, 8.4.27, 8.3.36 in 8.2.35. Za 8.1 in starejše uradnih posodobitev ni več.

Posodobitev PHP v Windows: preverite prenos in čisto zamenjajte

  1. Prenesite odpravljeno različico: s strani za prenos za Windows na php.net, ujemajočo se z varianto in arhitekturo.
  2. Primerjajte kontrolno vsoto: php.net za vsak arhiv navaja vrednost SHA-256. Če odstopa, datoteke ne uporabljajte.
  3. Razpakirajte v nov imenik: na primer C:\PHP\8.4.27, da stari vir ostane kot pot nazaj.
  4. Prevzemite konfiguracijo: kopirajte dosedanji php.ini in ga primerjajte z novim php.ini-production.
  5. Preverite razširitve: dodatne datoteke DLL tretjih ponudnikov se morajo ujemati z različico, varianto in arhitekturo.
  6. Preklopite pot: v vnosu FastCGI, v vrstici LoadModule v Apacheu ali v spremenljivki okolja PATH.
  7. Znova zaženite in preverite: znova zaženite storitev spletnega strežnika in načrtovana opravila, nato preverite različico in čase zagona.
# Izračunajte SHA-256 prenesene datoteke in jo primerjajte s php.net
Get-FileHash .\php-8.5.12-nts-Win32-vs17-x64.zip -Algorithm SHA256

# Po zamenjavi: naložene razširitve in različica nove namestitve
& "C:\PHP\8.5.12\php.exe" -m
& "C:\PHP\8.5.12\php.exe" -v

Če PHP po zamenjavi ne zažene ali javi manjkajočo DLL, pogosto manjka Visual C++ Redistributable v ustrezni arhitekturi ali pa razširitev ne ustreza novi različici. Napako najhitreje pokažete, če php.exe -v pokličete neposredno v ukazni vrstici, preden preklopite spletni strežnik. Kaj posamezni vnosi v php.ini povzročijo, pojasnjuje php.ini razložen.

Apache v sistemu Windows: resno vzemite modulski način

Mnoge starejše namestitve Windows PHP vežejo neposredno v Apache prek vrstice LoadModule. To je tehnično isto kot mod_php v Linuxu. Ekipa PHP tveganje PHP2Shell uvršča najvišje prav tam, ker je bil prikazan exploit, še preden se sploh izvede koda aplikacije. Ozadje je na strani Zakaj je mod_php posebej ogrožen.

Katere module Apache nalaga, pokaže httpd.exe -M v imeniku bin namestitve; ukaz samo bere. Če je tam modul PHP, ima posodobitev prednost. Srednjeročno se splača preklop na PHP prek FastCGI z gradnjo NTS, da PHP teče v lastnih procesih. To zahteva preizkus, ker se spremenita konfiguracija in pravice.

Pomembno

Zamenjava datotek ranljivosti še ne zapre. Dokler storitev Apache, bazeni aplikacij IIS ali načrtovana opravila tečejo s staro različico, ranljivost ostaja odprta. Po posodobitvi preverite čas zagona vsakega procesa.

Po posodobitvi: nadzor in sledi

Za vsako namestitev zabeležite pot, različico, varianto in datum zamenjave. Stare imenike PHP odstranite šele, ko novo stanje stabilno teče, in jih potem res odstranite, da se po nesreči ne vežejo znova.

Posodobitev ne odstrani škodljive programske opreme. Če je bil strežnik Windows v dneh pred popravkom dosegljiv z interneta, preverite spletne imenike glede novih skriptnih datotek, načrtovana opravila in lokalne račune glede neznanega ter zavarujte dnevnike spletnega strežnika od 20. oktobra. Kako prepoznate vdor, opisuje Ali smo že ogroženi?.

Kako PHP SOS pomaga konkretno?

  • Iskanje vseh namestitev: Poiščemo PHP na vaših sistemih Windows, tudi v modulih Apache, razvijalskih paketih in strokovnih aplikacijah.
  • Zamenjava in dokaz: Prek storitve popravljanja PHP preklopimo na odpravljeno različico, preverimo kontrolne vsote in dokumentiramo različico ter zagon procesov.
  • Izboljšava načina delovanja: Kjer PHP teče kot modul Apache, načrtujemo in preizkusimo prehod na FastCGI.
  • Preverjanje sledi: Zavarujemo dnevnike in sisteme preverimo glede znakov napada.

Pogosta vprašanja

Ali Windows Update posodobi tudi PHP?

Ne. PHP ni del sistema Windows. Pride kot arhiv ZIP s php.net, kot del paketa, kot je XAMPP, ali s strokovno aplikacijo in ga je treba posodobiti po tej poti.

Ali potrebujem različico Thread Safe ali Non Thread Safe?

Po php.net je NTS namenjena FastCGI, torej na primer IIS, in ukazni vrstici. TS je namenjena delovanju kot modul v spletnem strežniku, na primer v Apacheu. Pri posodobitvi vzemite isto različico kot doslej.

Kako preverim, ali je prenos PHP pristen?

php.net za vsak arhiv Windows navaja kontrolno vsoto SHA-256. S Get-FileHash v PowerShellu izračunate kontrolno vsoto prenesene datoteke in obe vrednosti primerjate znak za znakom.

Uporabljam XAMPP na strežniku. Kaj zdaj?

Paketi, kot je XAMPP, prinašajo lasten PHP in Apache, pogosto s PHP kot modulom Apache. Preverite, ali projekt ponuja različico z odpravljenim PHP, sicer namestitev preklopite na vzdrževano rešitev. Za produkcijsko delovanje takšni razvijalski paketi tako ali tako niso namenjeni.

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č