Trenutno stanje: PHP2Shell. Dvije kritične PHP ranjivosti (CVSS 9.2) omogućuju zlonamjerni kod bez prijave. Zakrpe od 21. 10. 2026.Što sada učiniti →

Ažurirati PHP na Windowsu

Na Windowsu nema automatskog PHP ažuriranja. Tko odabere pravu varijantu, provjeri preuzimanje i ponovno pokrene sve procese, uredno donosi PHP2Shell zakrpu na svako računalo.

Stanje 6 min čitanjaHosting i distribucije

Ukratko: Na Windowsu PHP ažurirate ručno: s php.net-a preuzmite ispravljenu verziju, odaberite istu varijantu (Thread Safe ili Non Thread Safe) i arhitekturu, provjerite preuzimanje putem SHA-256, preuzmite php.ini i proširenja, prebacite put i ponovno pokrenite sve PHP procese. Ažuriranje je osobito hitno ako Apache na Windowsu učitava PHP kao modul, jer taj način rada PHP tim kod PHP2Shella ocjenjuje najvišim.

Gdje se sve PHP krije na Windows računalima

Windows poslužitelja s PHP-om ima češće nego što mnogi misle. Rijetko je to velika web-stranica, često su to intraneti, stručne aplikacije ili alati koje je netko postavio prije godina. Rad pod IIS-om opisan je opširno na stranici Zaštititi PHP na Windowsu i IIS-u. Ovaj prilog obrađuje samo ažuriranje i slučajeve izvan IIS-a.

Tipična mjesta su Apache za Windows s PHP-om kao modulom, razvojni paketi poput XAMPP-a, WampServera ili Laragona koji su završili na poslužitelju, vlastite PHP kopije u stručnim aplikacijama i PHP skripte u planiranim zadacima. Sljedeće PowerShell naredbe samo čitaju i pomažu pri traženju:

# Pronaći sve php.exe na disku C: (na velikim diskovima traje neko vrijeme)
Get-ChildItem -Path C:\ -Filter php.exe -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime

# Koja se php.exe nalazi u putu pretraživanja?
where.exe php

# Aktivni PHP i Apache procesi s putem i vremenom pokretanja
Get-Process php*, httpd -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime, Path

# Verzija i učitana konfiguracija jedne instalacije (put kao primjer)
& "C:\PHP\8.4\php.exe" -v
& "C:\PHP\8.4\php.exe" --ini

Važno: ako PHP radi kao Apache modul, ne postoji zaseban PHP proces. PHP se tada nalazi u procesu httpd.exe. Tko traži samo php-cgi procese, previdjet će te instalacije.

Lako se zaborave i planirani zadaci koji pozivaju PHP skripte, primjerice za uvoze, izvještaje ili usklađivanje podataka. Oni često koriste vlastitu, stariju php.exe. Za PHP2Shell smatraju se manje ugroženima jer naredbeni redak prema dosadašnjim podacima s php.net-a ne spada u pogođene načine rada; pri zamjeni ipak moraju pokazivati na novi put, inače stara instalacija ostaje u uporabi i nikad se ne uklanja.

# Planirani zadaci koji pozivaju PHP
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'php' } |
  Select-Object TaskName, TaskPath, @{n='Programm';e={$_.Actions.Execute}}

Posebna je tema razvojna računala. XAMPP i slični paketi pokreću Apache s PHP-om kao modulom i često su dostupni u cijeloj mreži tvrtke. I tamo PHP treba ažurirati, a web-poslužitelj bi trebao osluškivati samo na vlastitom računalu.

Thread Safe ili Non Thread Safe: prava varijanta

php.net svaku Windows verziju nudi u više varijanti. Za zamjenu vrijedi: ista varijanta i arhitektura kao dosad, inače se web-poslužitelj ili proširenja neće učitati.

Obilježje Opcije Kada koja
Sigurnost niti NTS (Non Thread Safe), TS (Thread Safe) prema php.net-u NTS za FastCGI, primjerice IIS, i naredbeni redak; TS za PHP kao modul u Apacheu
Arhitektura x64, x86 php.net preporučuje x64
Kompajler VS16, VS17 traži Visual C++ Redistributable za Visual Studio 2015 do 2022

Za PHP 8.5 php.net je pri pozivu 25. 10. 2026. navodio verziju 8.5.12 od 21. 10. 2026., kao ZIP arhivu u sve četiri kombinacije. Ostale podržane grane birate na istoj stranici. Ispravljeni su 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Za 8.1 i starije više nema službenih ažuriranja.

PHP ažuriranje na Windowsu: provjeriti preuzimanje i uredno zamijeniti

  1. Preuzeti ispravljenu verziju: sa stranice za preuzimanje za Windows na php.net-u, prema varijanti i arhitekturi.
  2. Usporediti kontrolni zbroj: php.net uz svaku arhivu navodi SHA-256 vrijednost. Ako odstupa, datoteku ne koristite.
  3. Raspakirati u novu mapu: primjerice C:\PHP\8.4.27, kako bi stari status ostao kao povratni put.
  4. Preuzeti konfiguraciju: kopirati dosadašnji php.ini i usporediti ga s novim php.ini-production.
  5. Provjeriti proširenja: Dodatne DLL datoteke trećih pružatelja moraju odgovarati verziji, varijanti i arhitekturi.
  6. Prebaciti put: u FastCGI unosu, u retku LoadModule Apachea ili u varijabli okruženja PATH.
  7. Ponovno pokrenuti i provjeriti: ponovno pokrenuti uslugu web-poslužitelja i planirane zadatke, zatim kontrolirati verziju i vremena pokretanja.
# Izračunati SHA-256 preuzete datoteke i usporediti s php.net-om
Get-FileHash .\php-8.5.12-nts-Win32-vs17-x64.zip -Algorithm SHA256

# Nakon promjene: učitana proširenja i verzija nove instalacije
& "C:\PHP\8.5.12\php.exe" -m
& "C:\PHP\8.5.12\php.exe" -v

Ako PHP nakon promjene ne starta ili javi nedostajuću DLL datoteku, često nedostaje Visual C++ Redistributable u odgovarajućoj arhitekturi ili proširenje ne odgovara novoj verziji. Pogreška se najbrže pokaže ako php.exe -v pozovete izravno u naredbenom retku prije nego prebacite web-poslužitelj. Što pojedini unosi u php.ini znače, objašnjava članak php.ini objašnjen.

Apache na Windowsu: ozbiljno shvatiti modulni rad

Mnoge starije Windows instalacije PHP ugrađuju izravno u Apache putem retka LoadModule. To je tehnički isto što i mod_php na Linuxu. PHP tim rizik od PHP2Shella upravo tamo ocjenjuje najvišim jer je pokazan exploit prije nego što se uopće izvrši kod aplikacije. Pozadinu donosi članak Zašto je mod_php osobito ugrožen.

Koje module Apache učitava, prikazuje httpd.exe -M u mapi bin instalacije; naredba samo čita. Ako tamo stoji PHP modul, ažuriranje ima prednost. Srednjoročno se isplati prijelaz na PHP preko FastCGI-ja s NTS buildom, kako bi PHP radio u zasebnim procesima. To traži test jer se mijenjaju konfiguracija i prava.

Važno

Zamjena datoteka još ne zatvara ranjivost. Dok god Apache usluga, IIS application poolovi ili planirani zadaci rade sa starom verzijom, ranjivost ostaje otvorena. Nakon ažuriranja provjerite vrijeme pokretanja svakog procesa.

Nakon ažuriranja: kontrola i tragovi

Za svaku instalaciju zabilježite put, verziju, varijantu i datum promjene. Stare PHP mape uklonite tek kad novo stanje stabilno radi, i onda doista, kako ih se ne bi greškom ponovno uključilo.

Ažuriranje ne uklanja zlonamjerni softver. Ako je Windows poslužitelj u danima prije zakrpe bio dostupan s interneta, provjerite web-direktorije na nove skriptne datoteke, planirane zadatke i lokalne račune na nepoznato te osigurajte zapisnike web-poslužitelja od 20. listopada. Po čemu prepoznati provalu, opisuje članak Jesam li već kompromitiran?.

Kako PHP SOS konkretno pomaže?

  • Pronaći sve instalacije: Tražimo PHP na Vašim Windows sustavima, i u Apache modulima, razvojnim paketima i stručnim aplikacijama.
  • Zamijeniti i dokazati: Putem PHP usluge zakrpa prelazimo na ispravljenu verziju, provjeravamo kontrolne zbrojeve i dokumentiramo verziju i pokretanje procesa.
  • Poboljšati način rada: Gdje PHP radi kao Apache modul, planiramo i testiramo prelazak na FastCGI.
  • Provjeriti tragove: Osiguravamo zapisnike i provjeravamo sustave na naznake napada.

Česta pitanja

Ažurira li Windows Update i PHP?

Ne. PHP ne pripada Windowsu. Dolazi kao ZIP arhiva s php.net-a, kao dio paketa poput XAMPP-a ili uz stručnu aplikaciju i mora se ažurirati upravo tim putem.

Trebam li Thread Safe ili Non-Thread-Safe verziju?

Prema php.net-u NTS je namijenjen FastCGI-ju, dakle primjerice IIS-u, i naredbenom retku. TS je namijenjen radu kao modul u web-poslužitelju, primjerice u Apacheu. Pri ažuriranju uzmite istu varijantu kao dosad.

Kako provjeriti je li PHP preuzimanje autentično?

php.net uz svaku Windows arhivu navodi SHA-256 kontrolni zbroj. Naredbom Get-FileHash u PowerShellu izračunate kontrolni zbroj preuzete datoteke i usporedite obje vrijednosti znak po znak.

Koristim XAMPP na poslužitelju. Što sada?

Paketi poput XAMPP-a donose vlastiti PHP i Apache, često s PHP-om kao Apache modulom. Provjerite nudi li projekt verziju s ispravljenim PHP-om, a inače instalaciju prebacite na održavano rješenje. Takvi razvojni paketi ionako nisu namijenjeni produkcijskom radu.

Izvori

Hitni kontakt

Svaki sat se računa. Pišite nam odmah.

Ukratko opišite sustav, verziju PHP-a i opažanje. Javit ćemo Vam se, razjasniti situaciju i raditi na daljinu dok incident nije zaključen i dokumentiran.

Hitna pomoć