This blog post is also available in 🇬🇧 English: PHP2Shell: where to get the patched PHP for your setup.

  • EDIT du 22 octobre 2026, 11 h 44 :
    • PHP 8.5 corrigé sur Alpine 3.23.
  • EDIT du 22 octobre 2026, 11 h 29 :
    • PHP 8.3 corrigé sur Alpine 3.23.
    • tag dhi.io/php:8.5 corrigé (Docker Hardened Images).
    • binaires bulk de static-php-cli corrigés, PHP 8.2 à 8.5.
    • binaires gnu-bulk de static-php-cli corrigés, PHP 8.2 et 8.3.
    • binaires Windows spc-min de static-php-cli corrigés, PHP 8.2 à 8.5.

TL;DR : l’essentiel, sans tout lire (état au 22 octobre 2026, 11 h 44, heure de Paris)

Installez PHP 8.5.12, 8.4.27, 8.3.36 ou 8.2.35. Ces versions corrigent les 2 failles.

PHP 8.1 et les versions plus anciennes n’ont pas de nouvelle version officielle. Certaines distributions publient quand même un correctif grâce aux backports source fournis par l’équipe de PHP.

Plateforme ✅ Corrigé ⏳ Correctif en attente ❌ Aucun correctif
Sources officielles
php.net, sources PHP 8.2 à 8.5
php.net, Windows PHP 8.2 à 8.5
Linux
Debian Debian 13 : PHP 8.4
Debian 12 : PHP 8.2
Debian 9 à 11 : PHP 7.0 à 7.4, avec Debian ELTS
Debian testing : PHP 8.4
Ubuntu Ubuntu 22.04 à 26.10 : PHP 8.1 à 8.5
Ubuntu 14.04 à 20.04 : PHP 5.5 à 7.4, avec Ubuntu Pro
Dépôts d’Ondřej Surý PPA Ubuntu : PHP 5.6 à 8.5
packages.sury.org en amd64 : PHP 5.6 à 8.5
packages.sury.org en arm64
RHEL RHEL 10 : PHP 8.3 et 8.4
RHEL 9 : PHP 8.0, 8.2 et 8.3
RHEL 8 : PHP 7.4 et 8.2
RHEL 9 : PHP 8.4 RHEL 9 : PHP 8.1
RHEL 8 : PHP 7.2, 7.3 et 8.0
AlmaLinux Tous les flux : PHP 7.2 à 8.4
Rocky Linux Les mêmes versions que RHEL Rocky 8 : PHP 8.2
Dépôt de Remi PHP 7.4 à 8.5 PHP 5.6 à 7.3
Fedora Fedora 44 : PHP 8.5 Fedora 43 : PHP 8.4
Amazon Linux Amazon Linux 2023 : PHP 8.2 à 8.5
Amazon Linux 2, dépôt extra : PHP 8.2
Amazon Linux 2023 : PHP 8.1
Amazon Linux 2, dépôt principal : paquet php
Alpine Alpine 3.24 et edge : PHP 8.3 à 8.5
Alpine 3.23 : PHP 8.3 et 8.5
Alpine 3.23 : PHP 8.4
Alpine 3.21 : PHP 8.2
Alpine 3.22 : PHP 8.2 à 8.4
Alpine 3.21 : PHP 8.3 et 8.4
Arch Linux Paquet php : PHP 8.5
Paquet php-legacy : PHP 8.3
SUSE SLES 15 SP7 : PHP 8.3
openSUSE Tumbleweed : PHP 8.5
SLES 16 : PHP 8.4 openSUSE Leap : toutes les versions
macOS
Homebrew PHP 8.2 à 8.5 PHP 8.1
Tap shivammathur/php PHP 7.4, et PHP 8.1 à 8.5
MacPorts PHP 8.2 à 8.5 PHP 7.4 et 8.1
Docker
Image officielle php PHP 8.2 à 8.5
Variantes cli, apache, fpm et zts
Debian trixie, Debian bookworm, Alpine 3.23 et Alpine 3.24
PHP 7.4, 8.0 et 8.1
serversideup/php PHP 8.2 à 8.5, versions v5.0.2 et v4.5.3
Chainguard PHP 8.2 à 8.5
Docker Hardened Images PHP 8.2 à 8.5
webdevops/php PHP 8.2 à 8.5 PHP 8.1
thecodingmachine/php PHP 8.2 à 8.5 PHP 8.1
Bitnami PHP 8.5, tag bitnami/php-fpm:latest PHP 8.2 à 8.4 : aucune image gratuite
ubuntu/php Ubuntu 24.04 : PHP 8.3
Ubuntu 26.04 : PHP 8.5
Red Hat UBI PHP 7.4, 8.0, 8.2, 8.3 et 8.4 PHP 8.1
Aikido Correctif non confirmé
FrankenPHP
FrankenPHP 1.13.2 Binaires statiques : PHP 8.5
Images Docker : PHP 8.2 à 8.5
Paquets deb, rpm et apk : PHP 8.2 à 8.5
PaaS et serverless
Clever Cloud PHP 7.4 à 8.5
Rien à faire.
FrankenPHP 1.13.2. En attendant, FrankenPHP 1.13.1 tourne avec le PHP corrigé.
Upsun PHP 7.4 à 8.5
Rien à faire.
Heroku PHP 8.2 à 8.5
PHP 8.1 sur la stack heroku-22
Redéployez votre application.
Laravel Cloud PHP 8.2 à 8.5
Rien à faire.
Laravel Forge Cliquez sur « Update PHP » sur chaque serveur. Serveurs Ubuntu 20.04 et plus anciens
Laravel Vapor PHP 8.2 à 8.5
Redéployez votre application.
Bref PHP 8.2 à 8.5
Lancez composer update bref/bref -W, puis redéployez.
Google App Engine Rien à faire.
Google Cloud Run Redéployez les services déployés depuis les sources.
Azure App Service (Linux) Canaux Latest et Standard : PHP 8.2 à 8.5
Rien à faire.
Outils de développement
Symfony CLI Symfony CLI utilise le PHP de votre machine.
Mettez à jour ce PHP.
Laravel Herd Mise à jour de PHP
Laravel Sail amd64 : lancez sail build --no-cache. arm64, par exemple un Mac avec puce Apple
DDEV amd64 : contournement dans le billet de DDEV arm64
WampServer PHP 8.2 à 8.5
static-php-cli Binaires common, minimal et bulk : PHP 8.2 à 8.5
Binaires gnu-bulk : PHP 8.2 et 8.3
Binaires Windows spc-min : PHP 8.2 à 8.5
Binaires gnu-bulk : PHP 8.4 et 8.5
Binaires Windows spc-max
XAMPP Les installeurs utilisent encore PHP 8.2.12.
Lando Les images devwithlando/php ne sont pas reconstruites.

Avec Docker : reconstruisez vos images avec docker compose build --pull.

Après la mise à jour : redémarrez PHP-FPM, Apache et les workers.

⚠ Sur Debian, Ubuntu et RHEL, php -v affiche l’ancien numéro, même avec le correctif. Vérifiez la version du paquet. Voir comment faire.

Le 21 octobre, l’équipe de PHP a publié en urgence PHP 8.5.12, 8.4.27, 8.3.36 et 8.2.35. Ces versions corrigent deux failles baptisées PHP2Shell, CVE-2026-109618 et CVE-2026-109619. Elles sont de type RCE (Remote Code Execution), et permettent d’exécuter du code à distance sans authentification (score CVSS v4.0 de 9.2).

D’après l’avis de sécurité publié sur php.net, toute installation de PHP qui sert des requêtes web est exposée : PHP-FPM, Apache avec mod_php, php-cgi, FrankenPHP ou LiteSpeed. Le risque est le plus élevé avec mod_php.

Chaque distribution, chaque image Docker et chaque plateforme publie le correctif à son rythme. J’ai rassemblé ici, cas par cas, où trouver la version corrigée.

Dernière vérification : 22 octobre 2026, vers 11 h 44 (heure de Paris). Dans les tableaux :

  • ✅ le correctif est publié ;
  • ⏳ le correctif est en attente ;
  • ❌ aucun correctif n’est disponible à ce jour.

Les versions à viser

Branche Version corrigée Correctifs de sécurité jusqu’au
8.5 8.5.12 31/12/2029
8.4 8.4.27 31/12/2028
8.3 8.3.36 31/12/2027
8.2 8.2.35 31/12/2026
8.1, 8.0, 7.4 ❌ aucune nouvelle version fin de vie

L’équipe de PHP ne publie plus de version pour 8.1 et les branches plus anciennes. Elle a quand même publié des backports pour 7.4, 8.0 et 8.1. Ce sont des branches Git, sans tag ni archive à télécharger. Pour obtenir un paquet ou une image corrigée en 7.4, 8.0 ou 8.1, cherchez votre distribution ou votre image dans la suite de l’article.

Si vous êtes encore sur une version de PHP inférieure à 8.2, la meilleure manière de sécuriser vos installations est de mettre PHP à jour vers une version activement maintenue : 8.3 (fixes de sécurité uniquement), 8.4 ou 8.5.

⚠ PHP 8.2 arrive en fin de vie le 31 décembre 2026.

⚠ Sur Debian, Ubuntu, RHEL et leurs dérivés, php -v affiche toujours l’ancien numéro, même avec le correctif installé. Ces distributions backportent le correctif dans leur propre version de PHP. Par exemple, sur Ubuntu 24.04, le paquet corrigé affiche PHP 8.3.6. Pour savoir si vous êtes à jour, comparez la version du paquet installé avec la colonne « Version corrigée » de la section Linux. Les commandes qui affichent cette version sont dans la section Vérifier ce qui tourne vraiment.

Si vous ne pouvez pas mettre à jour tout de suite

L’avis de php.net liste des mesures d’atténuation. Elles réduisent l’exposition, mais elles ne remplacent pas la mise à jour. Voici les principales.

Contre CVE-2026-109619 :

  • Mettez session.upload_progress.enabled=0 dans le php.ini, le pool FPM ou la configuration du serveur. ini_set() et le fichier .user.ini de FPM ne suffisent pas.
  • Sur PHP 8.5 uniquement, mettez aussi fatal_error_backtraces=0.
  • Redémarrez ensuite tous les workers PHP.

Contre CVE-2026-109618 :

  • Mettez memory_limit=-1, de façon que l’application ne puisse pas le modifier : avec php_admin_value dans le pool FPM ou dans la configuration Apache.
  • Mettez un post_max_size bas : 8M, ou 32M si l’application reçoit des fichiers.
  • N’utilisez pas RLIMIT_AS ni RLIMIT_DATA pour limiter la mémoire : ils peuvent déclencher la faille.
  • Réduisez max_input_nesting_level (64 par défaut), par exemple à 16, et max_input_vars (1000 par défaut), par exemple à 500. Posez-les dans le php.ini ou le pool FPM : ini_set() ne peut pas les modifier. Vérifiez d’abord vos plus gros formulaires : au-delà de max_input_vars, PHP ignore les champs en trop.

Ces deux limites restent utiles après la mise à jour : d’après l’avis GHSA-w8hw-w9fx-j79w, elles réduisent le risque de saturation de la mémoire et de déni de service.

L’avis de php.net recommande aussi des limites à poser au niveau du serveur web ou du proxy : taille des requêtes, nombre de champs, nombre de parties multipart et nombre d’en-têtes.

Les sources officielles

Les archives sont sur la page de téléchargement de php.net. Chaque archive a son SHA256 et sa signature GPG (un fichier .asc à côté de l’archive). Les clés des release managers sont sur la page des clés GPG.

Version Archive Tag GitHub
8.5.12 php-8.5.12.tar.xz php-8.5.12
8.4.27 php-8.4.27.tar.xz php-8.4.27
8.3.36 php-8.3.36.tar.xz php-8.3.36
8.2.35 php-8.2.35.tar.xz php-8.2.35

Les archives existent aussi en .tar.gz et en .tar.bz2 : il suffit de changer l’extension dans l’URL.

Windows

Les builds Windows sont sur la page de téléchargement Windows de php.net. L’ancienne adresse windows.php.net redirige vers cette page.

Chaque version existe en Thread Safe et en Non Thread Safe, en x64 et en x86. Les SHA256 sont dans le fichier sha256sum.txt. Ces fichiers n’ont pas de signature GPG.

Version Compilateur Archive x64 Non Thread Safe
8.5.12 VS17 php-8.5.12-nts-Win32-vs17-x64.zip
8.4.27 VS17 php-8.4.27-nts-Win32-vs17-x64.zip
8.3.36 VS16 php-8.3.36-nts-Win32-vs16-x64.zip
8.2.35 VS16 php-8.2.35-nts-Win32-vs16-x64.zip

Pour la version Thread Safe, retirez -nts du nom du fichier. Pour le 32 bits, remplacez x64 par x86.

Linux

Sur un serveur, passez par le gestionnaire de paquets de votre distribution. Les tableaux ci-dessous donnent la version du paquet corrigé, telle que apt, dnf ou apk l’affiche.

Debian et Ubuntu

Distribution Paquet Version corrigée État
Debian 13 trixie php8.4 8.4.27-1~deb13u1 ✅ DSA-6574-1
Debian 12 bookworm php8.2 8.2.35-1~deb12u1 ✅ DLA-4848-1
Debian testing (forky) php8.4 8.4.27-1 ⏳ en attente de migration depuis sid (suivi)
Debian 11 bullseye php7.4 7.4.33-1+deb11u14 ✅ avec Debian ELTS, ELA-1853-1
Debian 10 buster php7.3 7.3.31-1~deb10u16 ✅ avec Debian ELTS, ELA-1854-1
Debian 9 stretch php7.0 7.0.33-0+deb9u26 ✅ avec Debian ELTS, ELA-1855-1
Ubuntu 26.10 php8.5 8.5.9-0ubuntu2.1 ✅ USN-8948-1
Ubuntu 26.04 LTS php8.5 8.5.4-0ubuntu1.5 ✅ USN-8948-1
Ubuntu 24.04 LTS php8.3 8.3.6-0ubuntu0.24.04.13 ✅ USN-8948-1
Ubuntu 22.04 LTS php8.1 8.1.2-1ubuntu2.28 ✅ USN-8948-1
Ubuntu 20.04 php7.4 7.4.3-4ubuntu2.29+esm5 ✅ avec Ubuntu Pro, USN-8948-2
Ubuntu 18.04 php7.2 7.2.24-0ubuntu0.18.04.17+esm14 ✅ avec Ubuntu Pro, USN-8948-2
Ubuntu 16.04 php7.0 7.0.33-0ubuntu0.16.04.16+esm22 ✅ avec Ubuntu Pro, USN-8948-2
Ubuntu 14.04 php5 5.5.9+dfsg-1ubuntu4.29+esm18 ✅ avec Ubuntu Pro, USN-8948-2

Le suivi complet est sur le security tracker de Debian et sur la page CVE d’Ubuntu.

Dépôts d’Ondřej Surý (packages.sury.org pour Debian, ppa:ondrej/php pour Ubuntu) :

  • ✅ toutes les branches de 5.6 à 8.5 ont été reconstruites le 21 octobre, y compris 7.4, 8.0 et 8.1 (par exemple 8.1.34-9 pour 8.1) ;
  • ✅ le PPA Ubuntu est à jour sur toutes les architectures ;
  • ✅ packages.sury.org est à jour en amd64 ;
  • ⏳ packages.sury.org est encore en attente en arm64, pour la plupart des branches ;
  • ⚠ pour 5.6 à 7.1, un ticket signale un correctif incomplet. Une nouvelle build est annoncée.

Red Hat et ses dérivés

Distribution Flux Version corrigée État
RHEL 10 php (8.3) php-8.3.36-1.el10_2 ✅ RHSA-2026:87070
RHEL 10 php8.4 php8.4-8.4.27-1.el10_2 ✅ RHSA-2026:87071
RHEL 9 php (8.0) php-8.0.30-8.el9_8.1 ✅ RHSA-2026:87151
RHEL 9 php:8.2 php-8.2.35-1 ✅ RHSA-2026:87072
RHEL 9 php:8.3 php-8.3.36-1 ✅ RHSA-2026:87079
RHEL 9 php:8.4 ⏳ en attente (page CVE)
RHEL 9 php:8.1 ❌ fin de vie, pas de correctif (page CVE)
RHEL 8 php:7.4 php-7.4.33-8 ✅ RHSA-2026:87080
RHEL 8 php:8.2 php-8.2.35-1 ✅ RHSA-2026:87073
RHEL 8 php:7.2, php:7.3, php:8.0 ❌ fin de vie, pas de correctif (page CVE)
  • Rocky Linux : ✅ mêmes correctifs que RHEL, publiés le 22 octobre. Les avis portent les mêmes numéros, avec le préfixe RLSA au lieu de RHSA (par exemple RLSA-2026:87071 pour php8.4 sur Rocky 10). ⏳ Seul php:8.2 sur Rocky 8 est encore en attente.
  • AlmaLinux : ✅ tous les flux sont corrigés, y compris ceux en fin de vie (7.2, 7.3, 8.0 et 8.1).

Dépôt de Remi (rpms.remirepo.net) :

  • ✅ les dépôts EL8, EL9 et EL10 contiennent des paquets corrigés depuis le 21 octobre : 7.4.33-31, 8.0.30-21, 8.1.34-6, 8.2.35-1, 8.3.36-1, 8.4.27-1 et 8.5.12-1. Leur changelog cite les deux CVE ;
  • ❌ les branches 5.6 à 7.3 ne sont pas corrigées ;
  • ℹ l’avis de php.net annonçait que ce dépôt ne serait pas mis à jour le 21 octobre. Remi n’a encore publié aucun billet sur son blog.

Fedora, Amazon Linux, Alpine, Arch et SUSE

Distribution Paquet Version corrigée État
Fedora 44 php 8.5.12-1.fc44 ✅ FEDORA-2026-a9eba4bbc3
Fedora 43 php 8.4.27-2.fc43 ⏳ dans updates-testing, FEDORA-2026-d5f8446449
Amazon Linux 2023 php8.2 8.2.35-1.amzn2023.0.1 ✅ ALAS2023-2026-3301
Amazon Linux 2023 php8.3 8.3.36-1.amzn2023.0.1 ✅ ALAS2023-2026-3302
Amazon Linux 2023 php8.4 8.4.27-1.amzn2023.0.1 ✅ ALAS2023-2026-3303
Amazon Linux 2023 php8.5 8.5.12-1.amzn2023.0.1 ✅ ALAS2023-2026-3304
Amazon Linux 2023 php8.1 ❌ pas de correctif prévu (page CVE)
Amazon Linux 2 php (extra php8.2) 8.2.35-1.amzn2.0.1 ✅ ALAS2PHP8.2-2026-015
Amazon Linux 2 php (dépôt principal) ❌ pas de correctif prévu (page CVE)
Alpine edge et 3.24 php83, php84, php85 8.3.36-r0, 8.4.27-r0, 8.5.12-r0 ✅ paquets 3.24, paquets edge
Alpine 3.23 php83, php85 8.3.36-r0, 8.5.12-r0 ✅ paquets 3.23
Alpine 3.23 php84 ⏳ en attente (paquets 3.23)
Alpine 3.22 php82, php83, php84 ❌ aucun correctif à ce jour (paquets 3.22)
Alpine 3.21 php82 ⏳ en attente (paquets 3.21)
Alpine 3.21 php83, php84 ❌ aucun correctif à ce jour
Arch Linux php 8.5.12-1 ✅ ASA-202610-1
Arch Linux php-legacy 8.3.36-1 ✅ ASA-202610-2
SLES 15 SP7 php8 8.3.36 ✅ page CVE SUSE
SLES 16.0 php8 8.4.27 ⏳ en validation (page CVE SUSE)
openSUSE Tumbleweed php8 8.5.12 ✅ dépôt de mises à jour
openSUSE Leap php8, php7 ❌ aucun correctif à ce jour (page CVE SUSE)

Sur Amazon Linux 2023, un dnf update simple ne suffit pas : la version du dépôt est figée. Les avis ALAS (par exemple ALAS2023-2026-3303) donnent la commande, ici pour le paquet php8.4 :

dnf update php8.4 --releasever 2023.12.20261021

Les images Docker officielles php:*-alpine n’utilisent pas les paquets Alpine : elles compilent PHP elles-mêmes. Elles sont déjà corrigées, voir la section Les images Docker.

macOS

Gestionnaire Paquet Version corrigée État
Homebrew php 8.5.12 ✅
Homebrew php@8.4 8.4.27 ✅
Homebrew php@8.3 8.3.36 ✅
Homebrew php@8.2 8.2.35 ✅
Homebrew php@8.1 ❌ formule dépréciée, pas de correctif
Tap shivammathur/php php, php@8.4, php@8.3, php@8.2 8.5.12, 8.4.27, 8.3.36, 8.2.35 ✅
Tap shivammathur/php php@8.1, php@7.4 8.1.34_4, 7.4.33_16 (backport) ✅
MacPorts php85, php84, php83, php82 8.5.12, 8.4.27, 8.3.36, 8.2.35 ✅
MacPorts php81, php74 ❌ aucun correctif à ce jour

Avec Homebrew, mettez à jour la formule que vous utilisez, par exemple brew upgrade php@8.4.

Les images Docker

L’image officielle php

L’image officielle php est ✅ reconstruite dans toutes ses variantes (commit de mise à jour) :

  • cli, apache, fpm et zts ;
  • sur Debian trixie (la base par défaut) et sur Debian bookworm ;
  • sur Alpine 3.23 et 3.24, sans la variante apache.
Branche Exemples de tags flottants Exemples de tags précis
8.5 8.5, 8.5-fpm, 8.5-apache, latest, fpm-alpine 8.5.12-fpm, 8.5.12-zts-bookworm
8.4 8.4, 8.4-fpm, 8.4-fpm-alpine, 8.4-zts 8.4.27-fpm, 8.4.27-fpm-alpine3.24
8.3 8.3, 8.3-fpm, 8.3-fpm-alpine, 8.3-apache 8.3.36-cli, 8.3.36-apache-trixie
8.2 8.2, 8.2-fpm, 8.2-fpm-alpine, 8.2-apache 8.2.35-fpm, 8.2.35-cli-alpine3.23

Votre tag pointe déjà sur la version corrigée, mais Docker utilise l’image qu’il a en cache. Sur une machine ou un runner de CI qui a déjà téléchargé php:8.4-fpm, un FROM php:8.4-fpm reconstruit sur l’ancienne 8.4.26. Ajoutez --pull au build pour forcer le téléchargement de la nouvelle image :

docker compose build --pull
docker compose up -d

Si votre compose.yaml utilise l’image telle quelle, sans étape de build, lancez docker compose pull avant docker compose up -d.

D’autres cas gardent l’ancienne version :

  • Kubernetes : avec imagePullPolicy: IfNotPresent et un tag flottant, chaque nœud garde l’image qu’il a en cache.
  • Image épinglée par digest (php:8.4-fpm@sha256:…) : elle reste vulnérable. Remplacez le digest.
  • Image épinglée par version (php:8.4.26-fpm) : elle reste vulnérable. Passez à php:8.4.27-fpm.
  • PHP 8.1, 8.0 et 7.4 : ❌ les tags 8.1, 8.0 et 7.4 de l’image officielle ne sont plus reconstruits. Il n’existe pas d’image officielle corrigée pour ces versions.

Les autres images

Image Tags Source
serversideup/php ✅ v5.0.2 (8.4-fpm-nginx, 8.4.27-fpm-nginx-alpine, etc.) et v4.5.3 (tags *-v4.5.3), de 8.2 à 8.5 release v5.0.2, release v4.5.3
Chainguard cgr.dev/chainguard/php ✅ latest (8.5.12), 8.4.27, 8.3.36, 8.2.35, avec leurs variantes -fpm et -dev fiche de l’image
Docker Hardened Images dhi.io/php ✅ 8.5.12, 8.4.27, 8.3.36, 8.2.35 (Debian 13 et Alpine), y compris le tag 8.5 journal des tags
webdevops/php, php-nginx, php-apache ✅ 8.2 à 8.5 et leurs variantes -alpine ; ❌ 8.1 tags
thecodingmachine/php ✅ 8.2-v5-* à 8.5-v5-* ; ❌ 8.1-v5-* tags
bitnami/php-fpm ✅ latest (8.5.12) uniquement ; ❌ aucun tag gratuit pour 8.4, 8.3 et 8.2 Dockerfile
ubuntu/php ✅ 8.3-24.04 (paquet backporté 8.3.6-0ubuntu0.24.04.13) et 8.5-26.04_edge USN-8948-1
Red Hat UBI ✅ ubi10/php-84, ubi10/php-83, ubi9/php-83, ubi9/php-82, ubi9/php-80, ubi8/php-82, ubi8/php-74 ; ❌ ubi9/php-81 catalogue Red Hat
Aikido aikido-dev/php ❌ correctif non confirmé : les tags relevés sont encore en 8.4.26, 8.3.35 ou 8.2.34, sauf fpm-alpine (8.5.12) images.aikido.dev

Pour PHP 8.0 et 7.4, les seules images corrigées que j’ai trouvées sont celles de Red Hat : ubi9/php-80 et ubi8/php-74. Elles contiennent les backports de RHEL.

FrankenPHP

Passez à FrankenPHP 1.13.2, sortie le 21 octobre. Elle embarque les versions corrigées de PHP. Elle corrige aussi quatre failles propres à FrankenPHP.

⚠ Le tag Docker 1.13.1 a été reconstruit avec PHP 8.5.12. PHP y est corrigé, mais pas les quatre failles propres à FrankenPHP.

Installation Où la trouver PHP embarqué
Binaire statique (Linux x86_64 et aarch64, macOS arm64, Windows) assets de la release v1.13.2 8.5.12 uniquement
Image Docker dunglas/frankenphp : 1.13.2, php8.5, php8.4, php8.3, php8.2, avec ou sans suffixe -alpine ou -bookworm 8.5.12, 8.4.27, 8.3.36, 8.2.35
Paquets deb, rpm et apk paquet frankenphp 1.13.2, un par branche de PHP 8.2 à 8.5
Homebrew formule dunglas/frankenphp 1.13.2 8.5.12
  • Les binaires statiques n’existent qu’avec PHP 8.5. Pour rester en 8.2, 8.3 ou 8.4 hors Docker, utilisez les paquets deb, rpm ou apk.
  • Mac Intel : la release ne fournit plus de binaire. Il faut le compiler avec build-static.sh.

Pour vérifier un binaire, lancez frankenphp version. La sortie doit indiquer FrankenPHP v1.13.2 et une version corrigée de PHP :

$ frankenphp version
FrankenPHP v1.13.2 PHP 8.5.12 Caddy v2.11.7 …

Les outils de développement

Outil Comment récupérer le PHP corrigé État
Symfony CLI il utilise le PHP installé sur la machine : mettez à jour ce PHP
Laravel Herd herd php:update 8.5 (remplacez 8.5 par votre branche). La doc prévient que les versions de correctif peuvent arriver avec quelques jours de retard ⏳ rien d’annoncé
Laravel Sail sail build --no-cache (image Ubuntu 24.04 avec les dépôts d’Ondřej Surý) ✅ amd64 ; ⏳ arm64 (Mac Apple Silicon)
DDEV contournement pour amd64 décrit dans le billet ; correctif complet attendu dans la v1.25.5 ✅ amd64 avec le contournement ; ⏳ arm64
Lando images devwithlando/php non reconstruites, encore en 8.5.7 et 8.4.22 ❌
WampServer addons PHP 8.2.35, 8.3.36, 8.4.27 et 8.5.12 ✅
XAMPP installeurs encore en PHP 8.2.12 ❌
static-php-cli binaires common, minimal et bulk en 8.2.35, 8.3.36, 8.4.27 et 8.5.12, pour Linux et macOS (sauf bulk pour Linux aarch64 en 8.4 et 8.5) ; binaires gnu-bulk en 8.2.35 et 8.3.36, pour Linux ; binaires Windows spc-min en 8.2.35, 8.3.36, 8.4.27 et 8.5.12 ✅ common, minimal, bulk, gnu-bulk en 8.2 et 8.3, Windows spc-min ; ⏳ gnu-bulk en 8.4 et 8.5, Windows spc-max

RoadRunner, Swoole et OpenSwoole n’embarquent pas PHP. Ils utilisent le PHP de la machine ou de l’image de base : c’est lui qu’il faut mettre à jour.

Les plateformes PaaS et serverless

Plateforme Ce qu’il faut faire Source
Clever Cloud ✅ Rien à faire : redéploiement automatique en 8.2.35, 8.3.36, 8.4.27 et 8.5.12, et builds corrigés de 7.4.33, 8.0.30 et 8.1.34. FrankenPHP est en 1.13.1 avec PHP corrigé ; la 1.13.2 arrivera avec la prochaine mise à jour de l’image Clever Cloud changelog, versions en fin de vie
Upsun ✅ Rien à faire : redéploiement automatique, y compris en 7.4, 8.0 et 8.1. Vérifiez avec upsun ssh -- php -v billet
Heroku ✅ Redéployez l’application. Buildpack v298 : 8.2.35 à 8.5.12, et 8.1.34 backporté sur la stack heroku-22 changelog
Laravel Cloud ✅ Rien à faire : corrigé sans redéploiement billet
Laravel Forge ✅ Bouton « Update PHP » sur chaque serveur, ou mise à jour en SSH ; ❌ Ubuntu 20.04 et versions antérieures ne peuvent pas être mis à jour billet
Laravel Vapor ✅ Redéployez billet
Bref ✅ composer update bref/bref -W, puis redéployez. Avec des images Docker : docker build --pull, puis redéployez billet
Google App Engine standard ✅ Rien à faire : corrigé automatiquement release notes
Google Cloud Run ✅ Redéployez les services déployés depuis les sources release notes
Azure App Service (Linux) ✅ Rien à faire sur les canaux Latest et Standard. Avec un conteneur personnalisé, mettez à jour votre image billet

Vérifier ce qui tourne vraiment

PHP installé depuis les sources, l’image Docker officielle, Homebrew, ou les dépôts d’Ondřej Surý ou de Remi : php -v affiche directement le bon numéro. Comparez-le à la section Les versions à viser.

PHP installé avec les paquets de Debian, Ubuntu, RHEL ou de leurs dérivés : php -v affiche l’ancien numéro. Vérifiez plutôt la version du paquet installé. Elle doit être égale ou supérieure à la colonne « Version corrigée » de la section Linux.

Sur Debian et Ubuntu :

dpkg-query -W 'php*-cli'

Sur RHEL, AlmaLinux, Rocky Linux et Fedora :

rpm -qa 'php*-cli*'

Sur Alpine :

apk info -v | grep php

Dans un conteneur, interrogez le PHP du conteneur en cours d’exécution, après avoir reconstruit l’image avec --pull (voir la section Les images Docker). Remplacez php par le nom de votre service Compose :

docker compose exec php php -v

Enfin, redémarrez tout ce qui exécute PHP. Un processus déjà lancé garde l’ancienne version en mémoire, même après la mise à jour du paquet :

  • PHP-FPM et Apache, si votre gestionnaire de paquets ne l’a pas fait ;
  • les workers Messenger et les autres commandes qui tournent en continu ;
  • FrankenPHP en mode worker et RoadRunner.

Pour aller plus loin