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 →

PHP helyi fejlesztése: Docker, DDEV és társaik

A helyi PHP-fejlesztéshez létezik a beépített webszerver, a hivatalos Docker-képek és az olyan eszközök, mint a DDEV. Fontos, hogy helyben ugyanaz a PHP-verzió fusson, mint élesben.

Állapot 4 perc olvasási időPHP-tudástár

Röviden: A PHP helyi fejlesztésére három bevett út létezik: a beépített webszerver (php -S) a gyors kísérletekhez, a hivatalos PHP Docker-képek az újraépíthető környezetekhez, és az olyan eszközök, mint a DDEV, amelyek kész projektkörnyezeteket hoznak létre WordPresshez, TYPO3-hoz, Shopwarehez vagy Laravelhez. Az eszköznél fontosabb az egyezés: helyben ugyanannak a PHP-verziónak kell futnia ugyanazokkal a bővítményekkel, mint élesben. A biztonság szempontjából a végén azonban mindig a szerveren lévő futtatókörnyezet számít.

Miért kell saját fejlesztői környezet?

A módosításokat közvetlenül az éles szerveren végezni kockázatos: minden elírás azonnal látható az ügyfelek számára, a tesztfájlok pedig szívesen ottmaradnak. A helyi környezet elválasztja a kipróbálást az üzemtől. Egyúttal ez az a hely, ahol az új PHP-verziókat és a biztonsági frissítéseket először tesztelik.

Az ügyvezetés és az IT-vezetés számára ezért nem az a kérdés, hogy van-e fejlesztői környezet, hanem hogy megfelel-e az éles rendszernek. Egy PHP 8.4-es helyi környezet, miközben élesben még a 8.1 fut, elfedi a problémákat, ahelyett hogy megmutatná őket. Ugyanez érvényes az adatbázis-verzióra, a webszerverre és az olyan bővítményekre, mint az intl, a gd vagy a pdo_mysql: egyetlen hiányzó bővítmény is oda vezethet, hogy egy hiba csak élesben tűnik fel.

A lehetőségek áttekintése

Lehetőség Alkalmas Erősségek Korlátok
Beépített szerver php -S rövid kísérletekhez, kis szkriptekhez további szoftver telepítése nélkül nem helyettesíti az Nginxet vagy az Apache-ot, nem nyilvános hálózatokra való
Hivatalos Docker-kép csapatoknak, újraépíthető környezetekhez a verzió taggel rögzíthető, közel a konténeres üzemhez a konfigurációt és több konténer együttműködését magának kell megépíteni
DDEV CMS- és keretrendszer-projektekhez kész projekttípusok, adatbázis és webszerver is benne van Dockert feltételez, saját konvenciói vannak
Helyben telepített PHP egyéni fejlesztőknek gyors, közvetlen több projekt verzióit nehéz párhuzamosan tartani

A beépített webszerver

A PHP 5.4 óta a parancssor egy kis webszervert tartalmaz. Az aktuális könyvtárban indul, vagy a -t kapcsolóval egy másik dokumentumkönyvtárban:

php -S localhost:8000 -t public/

Opcionálisan megadhat egy router-szkriptet, amely minden kérésnél először lefut. A kézikönyv a besorolásnál egyértelmű: a szerver a fejlesztést hivatott támogatni, nem teljes értékű webszerver, és nem szabad nyilvános hálózatban használni. Kösse ezért a localhost-hoz, nem a 0.0.0.0-hoz, különben adott esetben a céges vagy a szállodai Wi-Fin elérhető. Többet a parancssorról a PHP a parancssorban oldalon.

Docker: hivatalos PHP-képek

A hivatalos képek több változatban léteznek: cli a parancssorhoz, apache Apache-csal és mod_php-val, fpm az Nginx vagy más proxy mögötti üzemhez, emellett Alpine-változatok kis képekhez. Gyors indulás Apache-csal:

docker run --rm -p 8080:80 -v "$PWD":/var/www/html php:8.4-apache

A képek a php.ini-development és a php.ini-production sablont tartalmazzák a $PHP_INI_DIR könyvtárban. Helyben a fejlesztői sablon az ésszerű, mert megjeleníti a hibákat. Éles üzemre a képdokumentáció kifejezetten az éles sablont ajánlja. A bővítményeket a mellékelt docker-php-ext-configure, docker-php-ext-install és docker-php-ext-enable segédszkriptekkel telepítheti. Hogyan működnek a tagek és a digestek, azt a Hivatalos PHP Docker-képek cikk magyarázza.

DDEV: kész környezetek CMS-hez és keretrendszerekhez

A DDEV Dockerre épül, és egy projekthez webszervert, PHP-t, adatbázist és segédszolgáltatásokat állít be. A gyorsindítási útmutatók szinte mindig ugyanazt a mintát követik:

ddev config --project-type=wordpress --docroot=web
ddev start
ddev composer install
ddev launch

Projekttípusként a DDEV többek között a wordpress, typo3, shopware6, laravel, symfony, drupal11, magento2 típust és az általános php típust ismeri. A PHP-verziót a .ddev/config.yaml fájlban rögzíti; a dokumentáció szerint az 5.6-tól a 8.5-ig lehetséges, az alapértelmezés a 8.4:

# .ddev/config.yaml (részlet)
php_version: "8.3"
webserver_type: nginx-fpm   # másik lehetőség: apache-fpm

Így a helyi környezet megfelel az éles verziónak, akkor is, ha az még nem a legújabb.

Helyi fejlesztés, javítási állapot és PHP2Shell

A PHP2Shell után több platformszolgáltató rámutatott egy tipikus gondolkodási hibára. A Vercel a bulletin szerint hangsúlyozza, hogy a helyi fejlesztői környezet, az alkalmazáskód vagy a bővítmények frissítése nem elég; a döntő az a PHP-futtatókörnyezet, amely ténylegesen kiszolgál. Ha helyben PHP 8.4.27 van, az nem védi a 8.4.26-os szervert.

Fordítva, a fejlesztői környezet saját kockázatokat hoz, amelyek átvándorolhatnak az éles üzembe:

  1. Fejlesztői ini az éles üzemben: a display_errors a php.ini-development-ben be van kapcsolva. Ha ez a fájl a szerverre kerül, a látogatók útvonalakat és hibaüzeneteket látnak. Lásd Hibakimenet kikapcsolása éles üzemben.
  2. Elfelejtett tesztfájlok: phpinfo()-fájlok, adatbázis-dumpok vagy hozzáférési adatokat tartalmazó .env fájlok nem valók a telepítésbe.
  3. Nyitott fejlesztői szerverek: a php -S vagy közzétett portú konténerek a hálózatban lévő gépeken.
  4. Elavult képek: A helyi képek maguktól nem frissülnek; egy PHP biztonsági kiadás után a fejlesztői környezetet is újra kell építeni, hogy a tesztek a javított verzióval fussanak.
Tipp

A PHP-verziót egy helyen rögzítse, például a Dockerfile-ban vagy a .ddev/config.yaml-ban, és frissítéskor a szerverkonfigurációval együtt módosítsa.

Hogyan segít konkrétan a PHP SOS?

A biztonsági karbantartási szerződés keretében gondoskodunk arról, hogy a fejlesztés és az üzem illeszkedjen egymáshoz:

  • Egyeztetés: Összevetjük a fejlesztői, teszt- és éles környezet PHP-verzióját és bővítményeit.
  • Frissítési folyamat: Az új PHP-kiadásokat először a tesztkörnyezetben telepítjük, aztán élesben, mindkétszer újraindítással.
  • A telepítés ellenőrzése: Ügyelünk arra, hogy fejlesztői ini, tesztfájlok vagy hozzáférési adatok ne kerüljenek a szerverre.
  • Dokumentáció: Ön bármikor tudja, melyik verzió hol fut.

Gyakori kérdések

Használhatom nyilvánosan a PHP beépített webszerverét?

Nem. A PHP-kézikönyv kifejezetten kimondja, hogy a php -S paranccsal indított szerver a fejlesztést szolgálja, és nem szabad nyilvános hálózatban használni. Az éles üzemhez a PHP-FPM tartozik Nginxszel vagy Apache-csal.

Mi a DDEV?

A DDEV egy Dockerre épülő eszköz, amely kész fejlesztői környezeteket hoz létre PHP-projektekhez. Ismeri a WordPress, a TYPO3, a Shopware 6, a Laravel, a Drupal és további rendszerek projekttípusait.

Elég a helyi PHP-verziót frissíteni?

Nem. Az olyan rések ellen, mint a PHP2Shell, az a PHP-futtatókörnyezet számít, amely ténylegesen kiszolgál, vagyis a szerveren lévő. A helyi környezetnek viszont ugyanazt a verziót kell használnia, hogy a tesztek mérvadóak legyenek.

Melyik php.ini-t használjam helyben?

Helyben a php.ini-development értelmes, mert megjeleníti a hibákat. Éles üzemben a php.ini-production használandó. A hivatalos Docker-képek mindkét sablont tartalmazzák.

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