Aktuális helyzet: PHP2Shell. Két kritikus PHP-rés (CVSS 9,2) lehetővé teszi kártékony kód futtatását bejelentkezés nélkül. Javítások 2026. 10. 21. óta.Mi a teendő most →

Több PHP-verzió egy szerveren: mindegyiket külön kell javítani

Sok szerveren három, négy vagy több PHP-telepítés fut egymás mellett. A PHP2Shell után mindegyiket meg kell találni, frissíteni és újraindítani.

Állapot 5 perc olvasási időTárhely és disztribúciók

Röviden: Ha egy szerveren több PHP-verzió fut, a PHP2Shell után mindegyiket külön kell ellenőrizni, frissíteni és újraindítani. Tipikus források az operációs rendszer, a tárhelypanelek, például a Plesk vagy a cPanel, a harmadik féltől származó források, például a sury.org vagy a Remi, a CloudLinux, a LiteSpeed és a saját fordítású verziók. Csak a csomagokból, fájlokból és futó folyamatokból összeállított teljes lista mutatja meg, hogy valóban nem maradt-e ki egyetlen verzió sem.

Az elfelejtett verzió

Egy évek óta futó szerveren a PHP-verziók úgy gyűlnek, mint a régi bútorok a padláson. A panel három ágat hozott magával, egy ügyfélhez egy régebbi verzió érkezett harmadik féltől, az operációs rendszernek megvan a sajátja. Mindegyiket egyszer jó okkal telepítették. Csak ma már senki sem tudja, melyikre van még szükség.

A PHP2Shell után éppen ez jelent problémát. A javítások 2026. október 21-én jelentek meg a PHP 8.5.12, 8.4.27, 8.3.36 és 8.2.35 verzióhoz. A szerveren lévő minden telepítés azonban a saját útján, a saját csomagkarbantartójától és a saját idejében kapja meg őket. A PHP 8.1-hez és régebbiekhez csak minimális forráskód-backportok vannak. Aki csak a főverziót frissíti, a többit nyitva hagyja.

Honnan jön ennyi verzió

Az alábbi áttekintés tipikus forrásokat és példa-útvonalakat nevez meg. A pontos útvonalak verziónként és disztribúciónként eltérnek.

Forrás Példa-útvonal Ki szállítja a javítást
Debian/Ubuntu operációs rendszer /usr/bin/php8.3, /etc/php/8.3/ disztribúció
RHEL-család operációs rendszere /usr/bin/php, /etc/php-fpm.d/ disztribúció
Plesk /opt/plesk/php/8.3/ Plesk
cPanel (EasyApache 4) /opt/cpanel/ea-php83/ cPanel
CloudLinux alt-php /opt/alt/php83/ CloudLinux
Remi Software Collection /opt/remi/php83/ Remi
sury.org /usr/bin/php8.3, mint a rendszernél sury.org
LiteSpeed /usr/local/lsws/lsphp83/ LiteSpeed, illetve a csomagforrás
Saját fordítású gyakran /usr/local/bin/php Ön maga
Konténer az image-ben az image kiadója, az újraépítést Ön végzi

Különösen alattomosak a sury.org csomagjai, mert ugyanazokat az útvonalakat használják, mint a disztribúció. Hogy egy php8.3 a Debianból vagy a sury.org-ról származik-e, csak a csomagforrás mutatja meg. A sajátosságokat a A sury.org tároló és a A Remi tároló cikk írja le. Hogy a Plesk hogyan kezeli a verzióit, azt a Plesk-szerver: PHP-verziók ellenőrzése és javítása oldal ismerteti.

Az összes PHP-telepítés megkeresése

Megbízható lista három nézőpontból áll össze. A parancsok kizárólag olvasnak, és szervertől függően eltarthatnak egy ideig.

# 1. Csomagok: amit a csomagkezelő ismer
dpkg-query -W -f='${Package}\t${Version}\n' '*php*' 2>/dev/null | grep -E "fpm|cli|cgi|mod-php|lsphp"
rpm -qa 2>/dev/null | grep -iE "php.*(fpm|cli|cgi|litespeed)|^php-[0-9]|^ea-php|^alt-php" | sort

# 2. Fájlok: végrehajtható PHP-binárisok, a csomagkezelésen kívül is
find / -xdev -type f \( -name 'php' -o -name 'php[0-9]*' -o -name 'php-fpm*' -o -name 'php-cgi*' -o -name 'lsphp*' \) -perm -u+x 2>/dev/null

# 3. Folyamatok: ami éppen ténylegesen fut, indulási idővel
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"

Vesse össze a három listát. A csomag nélküli fájl saját fordítású vagy kézzel másolt verzióra utal. A megfelelő fájl nélküli folyamat egy törölt, de még futó telepítésre utalhat. Apache esetén ellenőrizze azt is, hogy be van-e töltve PHP-modul, például az apache2ctl -M vagy a httpd -M paranccsal. A konténerek és a Kubernetes-podok ezeken a listákon csak részben jelennek meg, és az image-ek külön ellenőrzését igénylik.

Minden verzió külön javítása

Ha a listájában minden telepítésnek van egy sora, mindegyikre ugyanaz a folyamat vonatkozik:

  1. Tisztázza a felelőst: A javítás a disztribúciótól, a paneltől, harmadik féltől származó forrásból vagy Öntől jön?
  2. Értékelje az állapotot: hivatalos kijavított verzió, megerősített backport, tisztázatlan vagy nyitott.
  3. Frissítsen: az adott forrás útján, nem más úton.
  4. Indítsa újra: ennek a verziónak a szolgáltatását, nem csak a fő szolgáltatást. mod_php esetén a webszervert. A részletek a A PHP-FPM és az összes worker újraindítása oldalon vannak.
  5. Ellenőrizze: vesse össze a folyamatok indulási idejét a frissítés időpontjával.
  6. Dokumentálja: verzió, csomagállapot, bizonyíték, újraindítás ideje.

Azokra a verziókra, amelyekhez nincs javítás, a migrációig a php.net átmeneti intézkedései érvényesek. Ezeket minden verzióra külön állítsa be, mert minden telepítésnek saját php.ini-je és saját poolja van.

Fontos

Ne feledkezzen meg a parancssorról. A cron-feladatok és szkriptek gyakran más PHP-verzióval futnak, mint a weboldal. Ennek a verziónak is javított állapotban kell lennie, még ha nem is dolgoz fel webes kéréseket.

Melyik verziót használja a parancssor, melyiket a konténer?

Két terület különösen gyakran kerüli el a keresést. Az első a parancssor. Debian és Ubuntu alatt az alternatívák rendszere dönti el, melyik bináris áll a php parancs mögött. Az update-alternatives --display php megmutatja, mely verziók vannak regisztrálva és melyik érvényes éppen. A rögzített útvonalat hívó cron-feladatok, például a /usr/bin/php7.4, azonban megkerülik ezt a beállítást. Ezért érdemes megnézni az összes felhasználó crontabjait és a saját cron-feladatokat létrehozó panelek konfigurációját.

A második terület a konténerek. Egy Docker-konténer a szerveren saját PHP-verziót hoz magával, amely a gazdagép egyetlen csomaglistáján sem szerepel. A docker ps megmutatja a futó konténereket; hogy van-e bennük PHP és milyen verzió, azt az image megtekintése vagy egy php -v a konténerben árulja el. A javítás ott nem a gazdagépen történik, hanem az image újraépítésével és a konténer lecserélésével.

Kevesebb biztonságosabb

A legjobb ellenőrzés az, amelyet nem kell elvégezni. Minden telepített PHP-verzió megduplázza a ráfordítást a következő résnél. A PHP2Shell után ezért egyértelmű szabály éri meg: a szerveren minden verziónak célja és felelőse kell, hogy legyen. Ami egyikkel sem rendelkezik, azt először kikapcsolják, majd egy megfigyelési idő után eltávolítják. Erről többet a Régi PHP-verziók kikapcsolása a tárhelypanelben cikkben olvashat.

Hogyan segít konkrétan a PHP SOS?

  • Összeállítjuk a szerverei összes PHP-telepítésének teljes listáját csomagokból, fájlokból, folyamatokból és konténerekből.
  • Verziónként tisztázzuk az eredetet, a felelőst és a javítási állapotot.
  • A PHP-javítási szolgáltatás keretében minden verziót frissítünk, minden szolgáltatást újraindítunk, és igazoljuk az állapotot.
  • Önnel közösen meghatározzuk, mely verziók maradnak, a többit pedig ellenőrzötten eltávolítjuk.

Gyakori kérdések

Miért fut több PHP-verzió a szerveremen?

Gyakori okok: a tárhelypanelek saját PHP-buildeket hoznak magukkal, újabb verziókhoz harmadik féltől származó források, például a sury.org vagy a Remi szolgálnak, és régebbi alkalmazásoknak meghatározott verzióra van szükségük. Ehhez gyakran hozzájön még az operációs rendszer PHP-verziója is.

Veszélyes az a PHP-verzió, amelyet egy weboldal sem használ?

Amíg telepítve van és szolgáltatásként aktív, elérhető lehet, például egy tesztdomainen, egy elfelejtett poolon vagy egy cron-feladaton keresztül. Ráadásul később véletlenül hozzárendelhető egy weboldalhoz. A nem szükséges verziókat érdemes eltávolítani.

Hogyan találom meg az összes PHP-telepítést egy Linux-szerveren?

Kombináljon három nézőpontot: telepített csomagok, végrehajtható PHP-fájlok a fájlrendszerben és futó folyamatok. Csak ha mindhárom ugyanazt a képet adja, teljes a lista.

A frissítés után minden verziót külön újra kell indítani?

Igen. Minden verziónak általában saját FPM-szolgáltatása van, a LiteSpeednek saját lsphp-folyamatai, a mod_php pedig az Apache-folyamatban él. A fő szolgáltatás újraindítása nem újítja meg a többit.

Források

Azonnali kapcsolat

Minden óra számít. Írjon nekünk most.

Ismertesse röviden a rendszert, a PHP-verziót és a megfigyelését. Jelentkezünk, tisztázzuk a helyzetet, és távolról dolgozunk, amíg az incidens le nem zárul és dokumentálva nem lesz.

Azonnali segítség