# Ažurirati PHP na Windowsu

> PHP ažuriranje na Windowsu: odaberite pravu varijantu, provjerite preuzimanje putem SHA-256, preuzmite php.ini i pazite na Apache modul zbog PHP2Shella.

Izvor: https://phpsos.de/hr/blog/php-unter-windows-aktualisieren/  
Stanje: 25.10.2026  
Pružatelj: PHP SOS, PHP hitna pomoć i sigurnost poslužitelja. Hitna pomoć putem WhatsAppa: https://wa.me/491736494914?text=Pozdrav%20PHP%20SOS%2C%20trebamo%20pomo%C4%87%20s%20na%C5%A1im%20PHP%20poslu%C5%BEiteljem.%20Tvrtka%3A%20%E2%80%A6%20Web-stranica%3A%20%E2%80%A6

**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](https://phpsos.de/hr/server/windows-iis-php/). 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:

```powershell
# 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.

```powershell
# 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.

```powershell
# 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](https://phpsos.de/hr/php/php-ini-erklaert/).

## 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](https://phpsos.de/hr/php2shell/mod-php-risiko/).

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?](https://phpsos.de/hr/php2shell/bin-ich-gehackt-anzeichen/).

## 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](https://phpsos.de/hr/leistungen/php-patch-service/) 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

- [php.net: preuzimanje PHP-a za Windows](https://www.php.net/downloads.php?os=windows)
- [PHP: podržane verzije](https://www.php.net/supported-versions.php)
- [Apache HTTP Server: dokumentacija](https://httpd.apache.org/docs/)
