Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

PHP uuendamine Windowsis

Windowsis ei ole automaatset PHP uuendust. Kes valib õige variandi, kontrollib allalaadimist ja taaskäivitab kõik protsessid, viib PHP2Shelli paiga puhtalt igasse arvutisse.

Seis Lugemisaeg 5 minVeebimajutus ja distributsioonid

Lühidalt: Windowsis uuendate PHP-d käsitsi: laadige php.net-ist parandatud versioon, valige sama variant (Thread Safe või Non Thread Safe) ja arhitektuur, kontrollige allalaadimist SHA-256-ga, võtke php.ini ja laiendused üle, lülitage tee ümber ja taaskäivitage kõik PHP protsessid. Eriti kiireloomuline on uuendus siis, kui Apache laadib Windowsis PHP-d moodulina, sest selle töörežiimi hindab PHP meeskond PHP2Shelli puhul kõige kõrgemaks.

Kus PHP Windowsi arvutites kõikjal peidus on

Windowsi servereid PHP-ga on rohkem, kui paljud arvavad. Harva on see suur veebisait, sageli on need intranetid, erirakendused või tööriistad, mille keegi aastate eest seadistas. IIS-is töötamist kirjeldab põhjalikult leht PHP kaitsmine Windowsis ja IIS-is. See artikkel käsitleb uuendust ennast ja juhtumeid väljaspool IIS-i.

Tüüpilised leiukohad on Apache Windowsile PHP-ga moodulina, arendajapaketid nagu XAMPP, WampServer või Laragon, mis on sattunud serverisse, erirakenduste oma PHP koopiad ning PHP skriptid ajastatud ülesannetes. Järgmised PowerShelli käsud ainult loevad ja aitavad leida:

# Leidke kõik php.exe kettalt C: (suurtel ketastel võtab veidi aega)
Get-ChildItem -Path C:\ -Filter php.exe -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, LastWriteTime

# Milline php.exe asub otsinguteel?
where.exe php

# Töötavad PHP ja Apache protsessid koos tee ja käivitusajaga
Get-Process php*, httpd -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime, Path

# Paigalduse versioon ja laaditud seadistus (tee näitena)
& "C:\PHP\8.4\php.exe" -v
& "C:\PHP\8.4\php.exe" --ini

Oluline: kui PHP töötab Apache'i moodulina, ei ole eraldi PHP protsessi. PHP asub siis protsessis httpd.exe. Kes otsib ainult php-cgi protsesse, jätab need paigaldused märkamata.

Kergesti unustatakse ka ajastatud ülesanded, mis kutsuvad PHP skripte, näiteks importideks, aruanneteks või andmevõrdlusteks. Need kasutavad sageli oma, vanemat php.exe. PHP2Shelli puhul peetakse neid vähem ohustatuks, sest käsurida ei kuulu php.net-i seniste andmete kohaselt mõjutatud töörežiimide hulka; väljavahetamisel peavad need siiski uuele teele osutama, muidu jääb vana paigaldus kasutusse ega eemaldata kunagi.

# Ajastatud ülesanded, mis kutsuvad PHP-d
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'php' } |
  Select-Object TaskName, TaskPath, @{n='Programm';e={$_.Actions.Execute}}

Omaette teema on arendajate arvutid. XAMPP ja sarnased paketid käivitavad Apache'i PHP-ga moodulina ja on sageli kättesaadavad kogu ettevõtte võrgus. Ka seal tuleb PHP uuendada ning veebiserver peaks kuulama ainult oma arvutis.

Thread Safe või Non Thread Safe: õige variant

php.net pakub iga Windowsi versiooni mitmes variandis. Väljavahetamisel kehtib: sama variant ja arhitektuur mis seni, muidu veebiserver või laiendused ei lae.

Tunnus Valikud Millal milline
Lõimeohutus NTS (Non Thread Safe), TS (Thread Safe) php.net-i kohaselt NTS FastCGI jaoks, näiteks IIS, ja käsurea jaoks; TS PHP jaoks moodulina Apache'is
Arhitektuur x64, x86 php.net soovitab x64
Kompilaator VS16, VS17 vajab Visual C++ Redistributable'it Visual Studio 2015 kuni 2022 jaoks

PHP 8.5 puhul loetles php.net 25.10.2026 päringu ajal versiooni 8.5.12 kuupäevaga 21.10.2026, ZIP-arhiivina kõigis neljas kombinatsioonis. Ülejäänud toetatud harud valite samal lehel. Parandatud on 8.5.12, 8.4.27, 8.3.36 ja 8.2.35. Versioonidele 8.1 ja vanemad ametlikke uuendusi enam ei ole.

PHP uuendus Windowsis: allalaadimise kontroll ja puhas väljavahetus

  1. Laadige parandatud versioon: php.net-i Windowsi allalaadimislehelt, vastavalt variandile ja arhitektuurile.
  2. Võrrelge kontrollsummat: php.net nimetab iga arhiivi juures SHA-256 väärtuse. Kui see erineb, ärge faili kasutage.
  3. Pakkige uude kausta lahti: näiteks C:\PHP\8.4.27, et vana seis jääks tagasiteeks alles.
  4. Võtke seadistus üle: kopeerige senine php.ini ja võrrelge uue php.ini-production-iga.
  5. Kontrollige laiendusi: kolmandate osapoolte lisa-DLL-id peavad sobima versiooni, variandi ja arhitektuuriga.
  6. Lülitage tee ümber: FastCGI kirjes, Apache'i LoadModule-real või keskkonnamuutujas PATH.
  7. Taaskäivitage ja kontrollige: taaskäivitage veebiserveri teenus ja ajastatud ülesanded, seejärel kontrollige versiooni ja käivitusaegu.
# Allalaaditud faili SHA-256 arvutamine ja võrdlemine php.net-iga
Get-FileHash .\php-8.5.12-nts-Win32-vs17-x64.zip -Algorithm SHA256

# Pärast vahetust: uue paigalduse laaditud laiendused ja versioon
& "C:\PHP\8.5.12\php.exe" -m
& "C:\PHP\8.5.12\php.exe" -v

Kui PHP pärast vahetust ei käivitu või teatab puuduvast DLL-ist, puudub sageli sobiva arhitektuuriga Visual C++ Redistributable või laiendus ei sobi uue versiooniga. Viga ilmneb kõige kiiremini, kui kutsute php.exe -v otse käsureal enne veebiserveri ümberlülitamist. Mida php.ini üksikud kirjed teevad, selgitab php.ini selgitatud.

Apache Windowsis: võtke moodulirežiimi tõsiselt

Paljud vanemad Windowsi paigaldused ühendavad PHP otse Apache'iga LoadModule-rea kaudu. See on tehniliselt sama mis mod_php Linuxis. PHP meeskond hindab PHP2Shelli riski just seal kõige suuremaks, sest ekspluateerimist näidati enne, kui rakenduse kood üldse käivitub. Taust on lehel Miks mod_php on eriti ohustatud.

Milliseid mooduleid Apache laadib, näitab httpd.exe -M paigalduse bin-kaustas; käsk ainult loeb. Kui seal on PHP moodul, on uuendusel eelisjärjekord. Keskpikas perspektiivis tasub üle minna PHP-le FastCGI kaudu NTS-ehitusega, et PHP töötaks oma protsessides. See nõuab testi, sest seadistus ja õigused muutuvad.

Oluline

Failide väljavahetamine ei sulge turvaauku veel. Kuni Apache'i teenus, IIS-i rakenduspoolid või ajastatud ülesanded töötavad vana versiooniga, jääb turvauk lahti. Kontrollige pärast uuendust iga protsessi käivitusaega.

Pärast uuendust: kontroll ja jäljed

Märkige iga paigalduse kohta tee, versioon, variant ja vahetuse kuupäev. Eemaldage vanad PHP kaustad alles siis, kui uus seis töötab stabiilselt, ja siis ka tegelikult, et neid kogemata uuesti ei seataks.

Uuendus ei eemalda kahjulikku tarkvara. Kui Windowsi server oli paigale eelnenud päevadel internetist kättesaadav, kontrollige veebikaustu uute skriptifailide suhtes, ajastatud ülesandeid ja kohalikke kontosid tundmatu suhtes ning kindlustage veebiserveri protokollid alates 20. oktoobrist. Kuidas sissemurdmist ära tunda, kirjeldab Kas olen juba kompromiteeritud?.

Kuidas PHP SOS konkreetselt aitab?

  • Kõigi paigalduste leidmine: Otsime PHP-d teie Windowsi süsteemidest, ka Apache'i moodulitest, arendajapakettidest ja erirakendustest.
  • Väljavahetamine ja tõendamine: PHP-paigateenuse kaudu vahetame parandatud versioonile, kontrollime kontrollsummasid ning dokumenteerime versiooni ja protsessi käivituse.
  • Töörežiimi parandamine: Kus PHP töötab Apache'i moodulina, planeerime ja testime ülemineku FastCGI-le.
  • Jälgede kontroll: Kindlustame protokollid ja kontrollime süsteemidest rünnaku märke.

Korduma kippuvad küsimused

Kas Windows Update uuendab ka PHP-d?

Ei. PHP ei kuulu Windowsi juurde. See tuleb ZIP-arhiivina php.net-ist, paketi nagu XAMPP osana või erirakendusega ning seda tuleb uuendada vastavalt sel teel.

Kas vajan Thread Safe või Non Thread Safe versiooni?

php.net-i kohaselt on NTS mõeldud FastCGI jaoks, näiteks IIS-i jaoks, ja käsurea jaoks. TS on mõeldud veebiserveris moodulina töötamiseks, näiteks Apache'is. Võtke uuendamisel sama variant mis seni.

Kuidas kontrollin, kas PHP allalaadimine on ehtne?

php.net nimetab iga Windowsi arhiivi juures SHA-256 kontrollsumma. PowerShellis arvutate käsuga Get-FileHash allalaaditud faili kontrollsumma ja võrdlete mõlemat väärtust märk märgi haaval.

Kasutan serveris XAMPP-i. Mis nüüd?

XAMPP-i sarnased paketid toovad kaasa oma PHP ja Apache'i, sageli PHP-ga Apache'i moodulina. Kontrollige, kas projekt pakub parandatud PHP-ga versiooni, ja viige paigaldus vastasel korral hooldatud lahendusele. Tootmiskasutuseks selliseid arendajapakette niikuinii ette nähtud ei ole.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi