# Hivatalos PHP Docker image-ek: címkék, digestek és újraépítés

> PHP Docker image címkék érthetően: verziócímkék, fpm és apache változatok, digestek, és hogyan ellenőrzi használat előtt, hogy az image zárja-e a PHP2Shellt.

Forrás: https://phpsos.de/hu/blog/offizielle-php-docker-images/  
Állapot: 2026. 10. 25.  
Szolgáltató: PHP SOS, PHP-vészhelyzeti segítség és szerverbiztonság. Azonnali segítség WhatsAppon: https://wa.me/491736494914?text=%C3%9Cdv%C3%B6zl%C3%B6m%2C%20PHP%20SOS%21%20Seg%C3%ADts%C3%A9gre%20van%20sz%C3%BCks%C3%A9g%C3%BCnk%20a%20PHP-szerver%C3%BCnkkel.%20C%C3%A9g%3A%20%E2%80%A6%20Weboldal%3A%20%E2%80%A6

**Röviden:** A Docker Hubon a hivatalos PHP image sok tagben létezik, amelyek a verziót, a változatot (például cli, fpm, apache) és az alaprendszert kombinálják. A tag olyan mutató, amely az újraépítések után új állapotokra vándorol; csak a digest jelöl pontosan egy állapotot. A PHP2Shell ellen olyan image-re van szüksége, amelyben PHP 8.5.12, 8.4.27, 8.3.36 vagy 8.2.35 van, `php -v`-vel ellenőrizve, és a saját image-ei újraépítésére erre alapozva.

## Miért mond keveset önmagában a tag

Sok csapat egy olyan sort ír a Dockerfile-jába, mint a `FROM php:8.3-fpm`, majd elfelejti. Ez addig működik, amíg senki sem kérdezi, melyik PHP-verzió fut valójában. A PHP2Shell óta mindenki megkérdezi.

A válasz nem a Dockerfile-ban áll. Egy olyan tag, mint a `8.3-fpm`, a letöltés időpontjában az ág legújabb állapotára mutat. Ha az image-et október 21. előtt töltötték le, és azóta nem újították meg, sebezhető verziót tartalmaz, noha a tag ma egy kijavított állapotra mutat. A Docker Official Images irányelvei szerint az image-eket aktívan újraépítik, biztonsági javításoknál is. A helyi állapotát ez azonban nem érinti.

A teljes folyamatot az újraépítéstől az újonnan létrehozott konténerig a [PHP javítása Docker-konténerekben](https://phpsos.de/hu/php2shell/docker-container-patchen/) írja le. Itt az előkérdésről van szó: melyik a megfelelő image, és hogyan igazolja az állapotát?

## PHP Docker image címkék: így épülnek fel

A tagek legfeljebb három részből állnak. A Docker Hub olyan példákat mutat, mint a `php:8.2-cli`, a `php:8.2-fpm-alpine` vagy a `php:8.4.27-zts-alpine3.24`.

| Összetevő | Példa | Jelentés |
|---|---|---|
| Verziómegjelölés | `8.4.27` vagy `8.4` | a teljes verzió ezen az állapoton marad, az ágmegjelölés új javításokkal együtt vándorol |
| Változat | `cli`, `fpm`, `apache`, `zts` | a PHP üzemmódja a konténerben |
| Alaprendszer | `alpine3.24`, `bookworm`, `trixie` | az alapul szolgáló Alpine- vagy Debian-verzió |

A változatok a PHP2Shell szempontjából nem egyenértékűek. Az `fpm` PHP-FPM-et üzemeltet, az `apache` a PHP-t Apache-modulként, vagyis mod_php-ként. Ezt az üzemmódot a PHP-csapat értékeli a legmagasabbra, mert ott még az alkalmazáskód futása előtt bemutattak egy exploitot. Erről többet a [Miért különösen veszélyeztetett a mod_php](https://phpsos.de/hu/php2shell/mod-php-risiko/) oldalon olvashat. A `cli` változat parancssori feladatokra szolgál.

Az alaprendszernek is vannak következményei. Az Alpine image-ek kicsik, de más C-könyvtárat használnak, mint a Debian image-ek; egyes bővítmények vagy előre lefordított könyvtárak ott másként viselkednek. Ezért az alaprendszert ne a biztonsági frissítés mellékeként cserélje, hanem először maradjon annál, amit az alkalmazása ismer.

A megértéshez fontos: a hivatalos image-ben a PHP nem az alap disztribúció csomagjaiból származik. A Docker Hub leírása szerint a PHP forráskódja az image-ben van, a bővítményeket pedig segédszkriptek, például a `docker-php-ext-install` építik be. Az alaprendszer csomagfrissítése a saját Dockerfile-ban ezért nem változtat a PHP-verzión. Egyedül az számít, a hivatalos image melyik állapotára épít.

## Tag vagy digest: mi mikor változik

A digest egy image tartalmára számított ellenőrző összeg, `sha256:` formában, hosszú karaktersorozattal. Minden újraépítéssel megváltozik. Ezáltal alkalmas igazolásra: aki ismeri a digestet, pontosan tudja, melyik állapot fut.

A gyakorlatban a következő munkamegosztás vált be:

- **A Dockerfile-ban** az ágtag használata, például `php:8.4-fpm`, hogy egy újraépítés automatikusan megkapja az ág legújabb javítását.
- **A kiadásnál** a kész saját image digestjének használata, hogy egyértelmű legyen, mi kerül kiszállításra.
- **A dokumentációban** mindkettő rögzítése: tag, digest és a `php -v`-vel ellenőrzött verzió.

Aki ehelyett teljes verziótaget ír elő, például a `8.3.35-fpm`-et, az sosem kap automatikusan javítást. Ez lehet szándékos, de olyan folyamatot igényel, amely a taget minden biztonsági közleménynél felemeli.

## PHP2Shell: egy image ellenőrzése használat előtt

Az alábbi parancsok letöltenek egy image-et, és információt olvasnak ki. Futó konténereket nem módosítanak.

```bash
# Az ágtag aktuális állapotának letöltése
docker pull php:8.4-fpm

# Melyik PHP-verzió van az image-ben?
docker run --rm php:8.4-fpm php -v

# A letöltött image digestjének megjelenítése
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'

# Digest és platformok lekérdezése közvetlenül a registryből
docker buildx imagetools inspect php:8.4-fpm
```

Az `imagetools` lekérdezés több platformos image-eknél egy felső szintű digestet mutat, alatta pedig platformonként, például linux/amd64 vagy linux/arm64, egy-egy sajátot. Dokumentálja azt a digestet, amelyet a szerverei ténylegesen letöltenek, és vegye figyelembe, hogy a más architektúrájú fejlesztői gépek más platform-digestet kapnak.

Ha a `php -v` nem mutatja legalább az ág kijavított verzióját, az image elavult, vagy gyorsítótárból származik. Ellenőrizze ilyenkor, hogy a környezete nem használ-e olyan registry-tükröt, amely régi állapotokat szolgáltat.

A PHP 8.1-hez és a régebbiekhez a PHP-projekt már nem ad ki hivatalos kiadásokat. Ezért ezeknek az ágaknak a hivatalos image-e nem tartalmazhat rendes kijavított verziót. A már nem gondozott tagek a Docker irányelvei szerint továbbra is letölthetők maradnak, de már nem frissülnek.

> **Tipp:**
> Az image a Docker Hub szerint `php.ini-development` és `php.ini-production` fájlt hoz magával, és éles üzemben határozottan az éles változatot ajánlja. Saját beállításait fájlként tegye a `$PHP_INI_DIR/conf.d/` könyvtárba, a php.net átmeneti értékeit is.

## Tipikus hibák az image kiválasztásánál

- **Változat megszokásból:** Az apache változatot azért választják, mert egyszerűen indul, noha az fpm külön webszerverrel is lehetséges lenne.
- **A saját image-ek nincsenek újraépítve:** Az alapimage friss, az abból épített alkalmazás-image nem.
- **Többlépcsős buildek figyelmen kívül hagyása:** Egy több `FROM` sort tartalmazó Dockerfile-ban csak az egyiket igazítják.
- **Mellékimage-ek elfelejtése:** A workerek, a cron-konténerek és az admin eszközök saját tageket használnak.
- **Kizárólag a `latest` használata:** A tag nem mond semmit az ágról és a változatról, és új főág esetén váratlanul átugorhat.

Hogyan automatizálja az újraépítéseket, hogy egy elavult image egyáltalán ne fusson sokáig, azt a [CI/CD: PHP-image-ek automatikus újraépítése](https://phpsos.de/hu/blog/php-images-in-ci-neu-bauen/) írja le. A PHP alapjait konténerekben a [PHP konténerekben](https://phpsos.de/hu/php/php-in-containern/) oldal magyarázza.

## Hogyan segít konkrétan a PHP SOS?

- **Állomány ellenőrzése:** Kiolvassuk, mely tagek, digestek és PHP-verziók vannak az image-eiben és a futó konténereiben.
- **Változat értékelése:** Megvizsgáljuk, szükség van-e a mod_php-ra, vagy az fpm külön webszerverrel csökkenti a kockázatot.
- **Újraépítés és igazolás:** A [PHP-javítási szolgáltatással](https://phpsos.de/hu/leistungen/php-patch-service/) kijavított alapra építjük újra az image-eket, és dokumentáljuk a tagot, a digestet és a verziót.
- **A folyamat rögzítése:** Úgy alakítjuk ki a Dockerfile-okat és a kiadásokat, hogy a következő javítás tervezhetően érkezzen meg.


## Gyakori kérdések

**Mi a különbség a tag és a digest között?**  
Egy olyan tag, mint a php:8.4-fpm, név, amely minden újraépítés után új állapotra mutathat. A digest ellenőrző összeg, amely pontosan egy változatlan állapotot jelöl. Igazoláshoz és reprodukálható kiadásokhoz a digest a megbízhatóbb adat.

**Melyik tag tartalmazza a PHP2Shell javítását?**  
Kijavítottak a PHP 8.5.12, 8.4.27, 8.3.36 és 8.2.35. A teljes verziószámú tag közvetlenül mutatja az állapotot. Rövidebb tagek, például a 8.4-fpm esetén a letöltés után a php -v paranccsal ellenőrizze, melyik verzió van ténylegesen benne.

**Van javított hivatalos image a PHP 8.1-hez?**  
A PHP-projekt a 8.1-hez és régebbiekhez már nem ad ki hivatalos kiadásokat. Ezért ezeknek az ágaknak a hivatalos image-e nem tartalmazhat rendes kijavított verziót. Tervezze meg a váltást egy támogatott ágra.

**Kockázatosabb az apache változat, mint az fpm?**  
Az apache változat a PHP-t Apache-modulként, vagyis mod_php-ként üzemelteti. Ezt az üzemmódot a PHP-csapat a PHP2Shellnél a legmagasabbra értékeli. Mindkét változatnak szüksége van a frissítésre; a mod_php-nál különösen sürgős.

## Források

- [Docker Hub: hivatalos PHP image](https://hub.docker.com/_/php)
- [Docker-dokumentáció: docker buildx imagetools inspect](https://docs.docker.com/reference/cli/docker/buildx/imagetools/inspect/)
- [Docker Official Images: irányelvek és gondozás](https://github.com/docker-library/official-images)
- [php.net: biztonsági közlemények](https://www.php.net/)
