# Actualizarea PHP pe Windows

> Actualizare PHP pe Windows: alegeți varianta corectă, verificați descărcarea prin SHA-256, preluați php.ini și atenție la modulul Apache (PHP2Shell).

Sursa: https://phpsos.de/ro/blog/php-unter-windows-aktualisieren/  
Stadiu: 25.10.2026  
Furnizor: PHP SOS, Asistență de urgență PHP și securitatea serverelor. Ajutor imediat pe WhatsApp: https://wa.me/491736494914?text=Bun%C4%83%20ziua%2C%20PHP%20SOS%2C%20avem%20nevoie%20de%20ajutor%20cu%20serverul%20nostru%20PHP.%20Firma%3A%20%E2%80%A6%20Site%3A%20%E2%80%A6

**Pe scurt:** Pe Windows actualizați PHP manual: descărcați de pe php.net versiunea corectată, alegeți aceeași variantă (Thread Safe sau Non Thread Safe) și aceeași arhitectură, verificați descărcarea prin SHA-256, preluați php.ini și extensiile, schimbați calea și reporniți toate procesele PHP. Actualizarea este deosebit de urgentă dacă Apache încarcă pe Windows PHP ca modul, deoarece echipa PHP încadrează acest mod de operare drept cel mai ridicat la PHP2Shell.

## Unde se ascunde PHP pe calculatoarele Windows

Serverele Windows cu PHP sunt mai frecvente decât cred mulți. Rareori este vorba de site-ul mare, adesea sunt intraneturi, aplicații de specialitate sau instrumente pe care cineva le-a configurat cu ani în urmă. Operarea sub IIS este descrisă detaliat pe pagina [Securizarea PHP pe Windows și IIS](https://phpsos.de/ro/server/windows-iis-php/). Acest articol tratează actualizarea propriu-zisă și cazurile din afara IIS.

Locuri tipice sunt Apache pentru Windows cu PHP ca modul, pachetele pentru dezvoltatori precum XAMPP, WampServer sau Laragon, ajunse pe un server, copii proprii de PHP în aplicații de specialitate și scripturi PHP în sarcini programate. Comenzile PowerShell următoare doar citesc și ajută la găsire:

```powershell
# Găsiți toate php.exe de pe unitatea C: (durează cam mult pe unități mari)
Get-ChildItem -Path C:\ -Filter php.exe -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime

# Ce php.exe se află în calea de căutare?
where.exe php

# Procesele PHP și Apache care rulează, cu calea și ora de pornire
Get-Process php*, httpd -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime, Path

# Versiunea și configurația încărcată a unei instalări (calea ca exemplu)
& "C:\PHP\8.4\php.exe" -v
& "C:\PHP\8.4\php.exe" --ini
```

Important: dacă PHP rulează ca modul Apache, nu există un proces PHP propriu. PHP se află atunci în procesul `httpd.exe`. Cine caută doar procese php-cgi trece cu vederea aceste instalări.

Sunt ușor de uitat și sarcinile programate care apelează scripturi PHP, de exemplu pentru importuri, rapoarte sau reconcilieri de date. Ele folosesc adesea un `php.exe` propriu, mai vechi. Pentru PHP2Shell sunt considerate mai puțin expuse, deoarece linia de comandă nu face parte, conform indicațiilor de până acum de la php.net, dintre modurile de operare afectate; la înlocuire ele trebuie totuși să indice noua cale, altfel vechea instalare rămâne în uz și nu este niciodată eliminată.

```powershell
# Sarcini programate care apelează PHP
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'php' } |
  Select-Object TaskName, TaskPath, @{n='Programm';e={$_.Actions.Execute}}
```

Un subiect aparte sunt calculatoarele dezvoltatorilor. XAMPP și pachetele similare pornesc Apache cu PHP ca modul și sunt adesea accesibile în întreaga rețea a firmei. Și acolo PHP-ul trebuie actualizat, iar serverul web ar trebui să asculte doar pe propriul calculator.

## Thread Safe sau Non Thread Safe: varianta corectă

php.net oferă fiecare versiune Windows în mai multe variante. Pentru înlocuire se aplică: aceeași variantă și arhitectură ca până acum, altfel serverul web sau extensiile nu se încarcă.

| Caracteristică | Opțiuni | Când care |
|---|---|---|
| Siguranța la thread-uri | NTS (Non Thread Safe), TS (Thread Safe) | conform php.net, NTS pentru FastCGI, de exemplu IIS, și linia de comandă; TS pentru PHP ca modul în Apache |
| Arhitectură | x64, x86 | php.net recomandă x64 |
| Compilator | VS16, VS17 | necesită Visual C++ Redistributable pentru Visual Studio 2015 până la 2022 |

Pentru PHP 8.5, php.net lista la consultarea din 25.10.2026 versiunea 8.5.12 din 21.10.2026, ca arhivă ZIP în toate cele patru combinații. Celelalte ramuri acceptate le alegeți pe aceeași pagină. Sunt corectate 8.5.12, 8.4.27, 8.3.36 și 8.2.35. Pentru 8.1 și mai vechi nu mai există actualizări oficiale.

## Actualizarea PHP pe Windows: verificați descărcarea și înlocuiți curat

1. **Descărcați versiunea corectată:** de pe pagina de descărcare Windows de la php.net, potrivită cu varianta și arhitectura.
2. **Comparați suma de control:** php.net indică pentru fiecare arhivă o valoare SHA-256. Dacă diferă, nu folosiți fișierul.
3. **Dezarhivați într-un folder nou:** de exemplu `C:\PHP\8.4.27`, pentru ca vechiul nivel să rămână ca cale de întoarcere.
4. **Preluați configurația:** copiați `php.ini` existent și comparați-l cu noul `php.ini-production`.
5. **Verificați extensiile:** fișierele DLL suplimentare ale terților trebuie să se potrivească cu versiunea, varianta și arhitectura.
6. **Schimbați calea:** în intrarea FastCGI, în linia `LoadModule` din Apache sau în variabila de mediu `PATH`.
7. **Reporniți și verificați:** reporniți serviciul serverului web și sarcinile programate, apoi controlați versiunea și orele de pornire.

```powershell
# Calculați SHA-256 al fișierului descărcat și comparați-l cu php.net
Get-FileHash .\php-8.5.12-nts-Win32-vs17-x64.zip -Algorithm SHA256

# După schimbare: extensiile încărcate și versiunea noii instalări
& "C:\PHP\8.5.12\php.exe" -m
& "C:\PHP\8.5.12\php.exe" -v
```

Dacă PHP nu pornește după schimbare sau raportează un DLL lipsă, de cele mai multe ori lipsește Visual C++ Redistributable în arhitectura potrivită sau o extensie nu se potrivește cu noua versiune. Eroarea apare cel mai repede dacă apelați `php.exe -v` direct din linia de comandă înainte de a comuta serverul web. Ce fac intrările individuale din php.ini explică [php.ini explicat](https://phpsos.de/ro/php/php-ini-erklaert/).

## Apache pe Windows: luați în serios operarea ca modul

Multe instalări Windows mai vechi integrează PHP direct în Apache printr-o linie `LoadModule`. Tehnic, este același lucru cu mod_php pe Linux. Echipa PHP încadrează riscul PHP2Shell tocmai acolo drept cel mai ridicat, deoarece a fost demonstrat un exploit înainte de a rula vreun cod al aplicației. Contextul se află la [De ce mod_php este deosebit de expus](https://phpsos.de/ro/php2shell/mod-php-risiko/).

Ce module încarcă un Apache arată `httpd.exe -M` în folderul bin al instalării; comanda doar citește. Dacă acolo apare un modul PHP, actualizarea are prioritate. Pe termen mediu merită trecerea la PHP prin FastCGI cu build NTS, pentru ca PHP să ruleze în procese proprii. Aceasta cere un test, deoarece se schimbă configurația și drepturile.

> **Important:**
> Înlocuirea fișierelor nu închide încă vulnerabilitatea. Atât timp cât serviciul Apache, pool-urile de aplicații IIS sau sarcinile programate rulează cu vechea versiune, vulnerabilitatea rămâne deschisă. Verificați după actualizare ora de pornire a fiecărui proces.

## După actualizare: control și urme

Consemnați pentru fiecare instalare calea, versiunea, varianta și data schimbării. Eliminați vechile foldere PHP abia când noul nivel rulează stabil, și atunci cu adevărat, pentru ca ele să nu fie reintegrate din greșeală.

O actualizare nu elimină programele malițioase. Dacă un server Windows a fost accesibil din internet în zilele dinaintea patchului, verificați directoarele web pentru fișiere de script noi, sarcinile programate și conturile locale pentru elemente necunoscute și salvați jurnalele serverului web începând din 20 octombrie. Cum recunoașteți o intruziune descrie [Sunt deja compromis?](https://phpsos.de/ro/php2shell/bin-ich-gehackt-anzeichen/).

## Cum ajută PHP SOS concret?

- **Găsirea tuturor instalărilor:** Căutăm PHP pe sistemele dumneavoastră Windows, inclusiv în module Apache, pachete pentru dezvoltatori și aplicații de specialitate.
- **Înlocuire și dovedire:** Prin [serviciul de patch PHP](https://phpsos.de/ro/leistungen/php-patch-service/) trecem la versiunea corectată, verificăm sumele de control și documentăm versiunea și pornirea proceselor.
- **Îmbunătățirea modului de operare:** Acolo unde PHP rulează ca modul Apache, planificăm și testăm trecerea la FastCGI.
- **Verificarea urmelor:** Salvăm jurnalele și verificăm sistemele pentru indicii ale unui atac.


## Întrebări frecvente

**Actualizează Windows Update și PHP?**  
Nu. PHP nu face parte din Windows. Vine ca arhivă ZIP de pe php.net, ca parte a unui pachet precum XAMPP sau odată cu o aplicație de specialitate și trebuie actualizat de fiecare dată pe această cale.

**Am nevoie de versiunea Thread Safe sau Non-Thread-Safe?**  
Conform php.net, NTS este destinată FastCGI, deci de exemplu IIS, și liniei de comandă. TS este destinată operării ca modul în serverul web, de exemplu în Apache. La actualizare, alegeți aceeași variantă ca până acum.

**Cum verific dacă descărcarea PHP este autentică?**  
php.net indică pentru fiecare arhivă Windows o sumă de control SHA-256. Cu Get-FileHash în PowerShell calculați suma de control a fișierului descărcat și comparați cele două valori caracter cu caracter.

**Folosesc XAMPP pe un server. Ce fac acum?**  
Pachete precum XAMPP aduc propriul PHP și Apache, adesea cu PHP ca modul Apache. Verificați dacă proiectul oferă o versiune cu PHP corectat și, în caz contrar, mutați instalarea pe o soluție întreținută. Pentru operarea productivă, astfel de pachete de dezvoltare oricum nu sunt destinate.

## Surse

- [php.net: descărcarea PHP pentru Windows](https://www.php.net/downloads.php?os=windows)
- [PHP: versiuni acceptate](https://www.php.net/supported-versions.php)
- [Apache HTTP Server: documentație](https://httpd.apache.org/docs/)
