# Ametlikud PHP Dockeri pildid: sildid, digestid ja uuesti ehitamine

> PHP Dockeri pildi sildid selgitatud: versioonisildid, variandid nagu fpm ja apache, digestid ning kuidas enne kasutuselevõttu PHP2Shelli paika kontrollida.

Allikas: https://phpsos.de/et/blog/offizielle-php-docker-images/  
Seis: 25.10.2026  
Pakkuja: PHP SOS, PHP hädaabi ja serveri turvalisus. Kohene abi WhatsAppis: https://wa.me/491736494914?text=Tere%2C%20PHP%20SOS%2C%20vajame%20abi%20oma%20PHP-serveriga.%20Ettev%C3%B5te%3A%20%E2%80%A6%20Veebisait%3A%20%E2%80%A6

**Lühidalt:** Docker Hubi ametlikku PHP pilti on palju silte, mis ühendavad versiooni, variandi (näiteks cli, fpm, apache) ja baassüsteemi. Silt on osuti, mis liigub pärast uuesti ehitamist uutele seisudele; ainult digest tähistab täpselt ühte seisu. PHP2Shelli vastu vajate pilti, milles on PHP 8.5.12, 8.4.27, 8.3.36 või 8.2.35, kontrollituna käsuga `php -v`, ning oma piltide uuesti ehitamist sellele.

## Miks silt üksi vähe ütleb

Paljud meeskonnad kirjutavad oma Dockerfile'i rea nagu `FROM php:8.3-fpm` ja unustavad selle seejärel. See töötab seni, kuni keegi ei küsi, milline PHP versioon tegelikult töötab. Alates PHP2Shellist küsivad kõik.

Vastus ei seisa Dockerfile'is. Silt nagu `8.3-fpm` osutab tõmbamise hetkel selle haru uusimale seisule. Kui pilt tõmmati enne 21. oktoobrit ja seda pole sestsaadik uuendatud, sisaldab see haavatavat versiooni, kuigi silt osutab täna parandatud seisule. Docker Official Images juhiste kohaselt ehitatakse pilte aktiivselt uuesti, ka turvaparanduste puhul. Teie kohalikku seisu see aga ei puuduta.

Kogu protsessi uuesti ehitamisest uuesti loodud konteinerini kirjeldab leht [PHP paikamine Dockeri konteinerites](https://phpsos.de/et/php2shell/docker-container-patchen/). Siin on jutt eelküsimusest: milline pilt on õige ja kuidas selle seisu tõendate?

## PHP Dockeri pildi sildid: nii need on üles ehitatud

Sildid koosnevad kuni kolmest osast. Docker Hub näitab näiteid nagu `php:8.2-cli`, `php:8.2-fpm-alpine` või `php:8.4.27-zts-alpine3.24`.

| Osa | Näide | Tähendus |
|---|---|---|
| Versiooni näit | `8.4.27` või `8.4` | täisversioon jääb selle seisu juurde, haru näit liigub uute paikadega kaasa |
| Variant | `cli`, `fpm`, `apache`, `zts` | PHP töörežiim konteineris |
| Baassüsteem | `alpine3.24`, `bookworm`, `trixie` | aluseks olev Alpine'i või Debiani versioon |

Variandid ei ole PHP2Shelli mõttes võrdväärsed. `fpm` käitab PHP-FPM-i, `apache` käitab PHP-d Apache'i moodulina ehk mod_php-na. Selle töörežiimi hindab PHP meeskond kõige kõrgemaks, sest seal näidati ekspluateerimist enne, kui rakenduse kood üldse käivitub. Lähemalt artiklis [Miks mod_php on eriti ohustatud](https://phpsos.de/et/php2shell/mod-php-risiko/). Variant `cli` on mõeldud käsurea ülesannete jaoks.

Ka baassüsteemil on tagajärjed. Alpine'i pildid on väikesed, kuid kasutavad teistsugust C-teeki kui Debiani pildid; mõned laiendused või eelkompileeritud teegid käituvad seal teisiti. Ärge vahetage baassüsteemi seetõttu turvauuenduse kõrvalt, vaid jääge esialgu selle juurde, mida teie rakendus tunneb.

Mõistmiseks oluline: ametlikus pildis ei pärine PHP baasdistributsiooni pakettidest. Docker Hub kirjeldab, et PHP lähtekood asub pildis ja laiendused ehitatakse sisse abiskriptidega nagu `docker-php-ext-install`. Baassüsteemi paketiuuendus teie enda Dockerfile'is ei muuda PHP versiooni seetõttu midagi. Määrav on ainult see, millise ametliku pildi seisu peale ehitate.

## Silt või digest: mis millal muutub

Digest on pildi sisu kontrollsumma, kirjutatud kujul `sha256:` koos pika märgijadaga. See muutub iga uuesti ehitamisega. Seetõttu sobib see tõendiks: kes digesti teab, teab täpselt, milline seis töötab.

Praktikas on end tõestanud tööjaotus:

- **Dockerfile'is** kasutage haru silti, näiteks `php:8.4-fpm`, et uuesti ehitamine saaks automaatselt selle haru uusima paiga.
- **Juurutuses** kasutage valmis ehitatud oma pildi digesti, et oleks üheselt selge, mida tarnitakse.
- **Dokumentatsioonis** märkige mõlemad: silt, digest ja käsuga `php -v` kontrollitud versioon.

Kes fikseerib hoopis täisversiooni sildi nagu `8.3.35-fpm`, ei saa kunagi automaatselt paika. See võib olla soovitud, kuid nõuab protsessi, mis tõstab sildi iga turvateate korral.

## PHP2Shell: pildi kontroll enne kasutuselevõttu

Järgmised käsud tõmbavad pildi ja loevad teavet. Need ei muuda töötavaid konteinereid.

```bash
# Haru sildi praeguse seisu tõmbamine
docker pull php:8.4-fpm

# Milline PHP versioon pildis on?
docker run --rm php:8.4-fpm php -v

# Tõmmatud pildi digesti kuvamine
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'

# Digesti ja platvormide päring otse registrist
docker buildx imagetools inspect php:8.4-fpm
```

`imagetools` päring näitab mitme platvormiga piltide puhul ülemist digesti ja selle all iga platvormi, näiteks linux/amd64 või linux/arm64, oma. Dokumenteerige digest, mille teie serverid tegelikult tõmbavad, ja arvestage, et teistsuguse arhitektuuriga arendusarvutid saavad teise platvormi digesti.

Kui `php -v` ei näita vähemalt haru parandatud versiooni, on pilt aegunud või pärineb vahemälust. Kontrollige siis, kas teie keskkond kasutab registri peegelt, mis annab välja vanu seisusid.

Versioonidele 8.1 ja vanemad PHP projekt ametlikke väljalaskeid enam ei anna. Nende harude ametlik pilt ei saa seetõttu sisaldada tavalist parandatud versiooni. Sildid, mida enam ei hooldata, jäävad Dockeri juhiste kohaselt kättesaadavaks, kuid neid enam ei uuendata.

> **Näpunäide:**
> Pilt toob Docker Hubi andmetel kaasa `php.ini-development` ja `php.ini-production` ning soovitab tootmiskeskkonnas tungivalt tootmisversiooni. Oma sätted paigutage failina kataloogi `$PHP_INI_DIR/conf.d/`, ka php.net-i üleminekuväärtused.

## Tüüpilised vead pildi valikul

- **Variant harjumusest:** valitakse apache-variant, sest see käivitub lihtsalt, kuigi fpm eraldi veebiserveriga oleks võimalik.
- **Oma piltide uuesti ehitamata jätmine:** baaspilt on ajakohane, sellest ehitatud rakenduse pilt mitte.
- **Mitmeastmelised ehitused märkamata:** mitme `FROM`-reaga Dockerfile'is kohandatakse ainult üks.
- **Kõrvalpildid unustatud:** töölised, cron-konteinerid ja haldustööriistad kasutavad oma silte.
- **Ainult `latest` peale lootmine:** silt ei ütle midagi haru ja variandi kohta ning võib uue põhiharu korral ootamatult hüpata.

Kuidas uuesti ehitamist automatiseerida, et aegunud pilt ei jääks pikalt tööle, kirjeldab [CI/CD: PHP piltide automaatne uuesti ehitamine](https://phpsos.de/et/blog/php-images-in-ci-neu-bauen/). PHP põhitõdesid konteinerites selgitab [PHP konteinerites](https://phpsos.de/et/php/php-in-containern/).

## Kuidas PHP SOS konkreetselt aitab?

- **Varude kontroll:** Loeme välja, millised sildid, digestid ja PHP versioonid teie piltides ja töötavates konteinerites sisalduvad.
- **Variandi hindamine:** Kontrollime, kas mod_php on vajalik või kas fpm eraldi veebiserveriga vähendab riski.
- **Uuesti ehitamine ja tõendamine:** [PHP-paigateenusega](https://phpsos.de/et/leistungen/php-patch-service/) ehitame pildid parandatud alusel uuesti ja dokumenteerime sildi, digesti ja versiooni.
- **Protsessi kinnistamine:** Seadistame Dockerfile'id ja juurutused nii, et järgmine paik jõuab kohale planeeritavalt.


## Korduma kippuvad küsimused

**Mis vahe on sildil ja digestil?**  
Silt nagu php:8.4-fpm on nimi, mis võib pärast iga uuesti ehitamist osutada uuele seisule. Digest on kontrollsumma, mis tähistab täpselt ühte muutumatut seisu. Tõendite ja reprodutseeritavate juurutuste jaoks on digest usaldusväärsem näitaja.

**Milline silt sisaldab PHP2Shelli parandust?**  
Parandatud on PHP 8.5.12, 8.4.27, 8.3.36 ja 8.2.35. Täieliku versiooninumbriga silt näitab seisu otse. Lühemate siltide nagu 8.4-fpm puhul kontrollige pärast tõmbamist käsuga php -v, milline versioon tegelikult sisaldub.

**Kas PHP 8.1 jaoks on olemas paigatud ametlik pilt?**  
PHP projekt ei anna versioonidele 8.1 ja vanemad enam ametlikke väljalaskeid. Nende harude ametlik pilt ei saa seetõttu sisaldada tavalist parandatud versiooni. Planeerige üleminek toetatud harule.

**Kas apache-variant on riskantsem kui fpm?**  
Apache-variant käitab PHP-d Apache'i moodulina ehk mod_php-na. Selle töörežiimi hindab PHP meeskond PHP2Shelli puhul kõige kõrgemaks. Mõlemad variandid vajavad uuendust; mod_php puhul on kiirustamine eriti vajalik.

## Allikad

- [Docker Hub: ametlik PHP pilt](https://hub.docker.com/_/php)
- [Dockeri dokumentatsioon: docker buildx imagetools inspect](https://docs.docker.com/reference/cli/docker/buildx/imagetools/inspect/)
- [Docker Official Images: juhised ja hooldus](https://github.com/docker-library/official-images)
- [php.net: turvateated](https://www.php.net/)
