Migration

Fin du support de sécurité de PHP 8.2 le 31/12/2026 : que faire ?

PHP 8.2 ne recevra plus de correctif de sécurité après le 31 décembre 2026. Calendrier officiel, version à viser, changements à prévoir et plan de migration.

Illustration : deux bâtiments en maquette sur un socle en noyer ; on démonte l’échafaudage de l’ancien, un fil bleu le relie au nouveau.
FIG. 01 — Couverture de l’article · Illustration 3D

§ 01 / En bref

En bref

  • Le 31 décembre 2026, PHP 8.2 sort du support de sécurité : après cette date, l’équipe PHP ne publie plus aucun correctif pour cette branche, même pour une faille critique.
  • En octobre 2026, deux cibles ont du sens : PHP 8.4, maintenue jusqu’au 31 décembre 2028, ou PHP 8.5, maintenue jusqu’au 31 décembre 2029, selon ce qu’acceptent votre framework et vos dépendances.
  • Drupal 11 (versions 11.1 à 11.4) exige déjà PHP 8.3 au minimum ; Symfony 7.4 fonctionne encore avec PHP 8.2, mais Symfony 8 demande PHP 8.4.
  • Une migration se prépare : inventaire des serveurs et des dépendances, tests automatisés, lecture des guides de migration 8.3, 8.4 et 8.5, essai complet en préproduction.

PHP 8.2 cesse de recevoir des correctifs de sécurité le 31 décembre 2026. C’est la date publiée par l’équipe PHP sur sa page des versions supportées. Après cette date, une application qui tourne encore en PHP 8.2 continue de fonctionner, mais toute nouvelle faille dans le moteur PHP restera ouverte pour cette branche. Cet article rassemble le calendrier officiel, les versions à viser, les changements à prévoir et un plan de migration, avec la source de chaque date.

Ce que change le 31 décembre 2026

Chaque branche de PHP passe par trois états, définis sur php.net. En support actif, les bogues et les failles sont corrigés et des versions correctives sortent régulièrement. En correctifs de sécurité uniquement, seules les failles critiques sont corrigées, et les versions ne sortent qu’au besoin. En fin de vie, plus rien n’est publié : php.net recommande alors de mettre à jour au plus vite, car les utilisateurs « peuvent être exposés à des failles de sécurité non corrigées ».

PHP 8.2 est sortie le 8 décembre 2022. Son support actif s’est terminé le 31 décembre 2024 ; elle ne reçoit depuis que des correctifs de sécurité, jusqu’au 31 décembre 2026. Le 1er janvier 2027, elle rejoint la liste des branches non supportées, où figure déjà PHP 8.1 depuis le 31 décembre 2025.

Ce rythme découle d’une règle adoptée par le projet PHP (RFC « Release cycle update ») : chaque branche reçoit deux ans de corrections de bogues puis deux ans de correctifs de sécurité, et les fins de support sont alignées sur le 31 décembre.

Les failles PHP2Shell, rendues publiques le 21 octobre 2026, montrent ce que cette date veut dire : l’équipe PHP a publié des versions corrigées pour les branches 8.2 à 8.5 seulement ; PHP 8.1 et les versions plus anciennes n’en ont reçu aucune. PHP 8.2 a été corrigée cette fois-ci ; une faille publiée après le 31 décembre 2026 ne le sera plus. L’article PHP2Shell : vérifier sa version de PHP, poser la parade, corriger détaille la marche à suivre.

Le calendrier officiel des versions PHP

Dates relevées sur php.net le 17 octobre 2026 et recoupées avec endoflife.date :

Branche Sortie Support actif jusqu’au Sécurité jusqu’au
PHP 8.2 8 décembre 2022 31 décembre 2024 31 décembre 2026
PHP 8.3 23 novembre 2023 31 décembre 2025 31 décembre 2027
PHP 8.4 21 novembre 2024 31 décembre 2026 31 décembre 2028
PHP 8.5 20 novembre 2025 31 décembre 2027 31 décembre 2029

Deux lectures utiles. D’abord, PHP 8.3 est elle-même déjà en correctifs de sécurité seulement : une migration vers 8.3 ne repousse l’échéance que d’un an. Ensuite, PHP 8.4 quitte le support actif le même jour que PHP 8.2 quitte le support de sécurité : elle restera maintenue pour la sécurité deux années de plus.

Quelle version viser : 8.3, 8.4 ou 8.5 ?

La bonne cible est la version la plus récente que votre pile accepte entièrement : framework, bibliothèques, extensions et hébergement.

  • PHP 8.4 offre des correctifs de sécurité jusqu’au 31 décembre 2028. C’est la cible raisonnable quand une partie des dépendances ne déclare pas encore PHP 8.5.
  • PHP 8.5 ajoute un an de support (sécurité jusqu’au 31 décembre 2029). Elle suppose que chaque dépendance déclare la compatibilité ; c’est à vérifier, pas à supposer.
  • PHP 8.3 ne se justifie que comme étape intermédiaire, par exemple si une dépendance bloque encore 8.4. Son support de sécurité s’arrête le 31 décembre 2027.

Composer répond à la question pour votre projet : la commande composer prohibits php 8.4 (alias why-not) liste les paquets qui empêchent de passer à cette version, avec la contrainte qui bloque. Répétez-la pour 8.5 avant de choisir.

Ce qui casse entre PHP 8.2 et les versions suivantes

Une montée de version saute rarement une seule marche : passer de 8.2 à 8.4 impose de traiter les changements de 8.3 et de 8.4. Le manuel PHP publie, pour chaque version, la liste des changements incompatibles et des fonctionnalités dépréciées. Quelques exemples tirés de ces guides :

PHP 8.3

  • Incrémenter avec ++ une chaîne vide ou non alphanumérique est déprécié ; la fonction str_increment() est la voie prévue.
  • Appeler get_class() ou get_parent_class() sans argument est déprécié.

PHP 8.4

  • Les paramètres implicitement nullables sont dépréciés : function foo(T $a = null) doit devenir function foo(?T $a = null).
  • Le niveau d’erreur E_STRICT est supprimé et sa constante dépréciée.
  • exit() et die() se comportent désormais davantage comme des fonctions (coercition de type, respect de strict_types).

PHP 8.5

  • L’opérateur « backtick », alias de shell_exec(), est déprécié.
  • Les noms de conversion non canoniques (boolean), (integer), (double) et (binary) sont dépréciés au profit de (bool), (int), (float) et (string).
  • Terminer un case par un point-virgule au lieu de deux-points est déprécié.

Une dépréciation ne casse rien tout de suite : elle produit un avertissement E_DEPRECATED et annonce une suppression future. Activer ces avertissements en préproduction donne la liste exacte des lignes à corriger.

Symfony et Drupal : les contraintes du framework

Le framework fixe souvent la cible plus sûrement que le calendrier de PHP.

  • Symfony : la version 7.4, version à support long, demande PHP 8.2.0 ou plus ; elle reste donc installable aujourd’hui, mais votre PHP ne sera plus maintenu après le 31 décembre 2026. Symfony 8.0 exige PHP 8.4.0 ou plus : monter PHP d’abord ouvre la voie à Symfony 8.
  • Drupal : d’après la page des exigences PHP de Drupal, les versions 11.1 à 11.4 ne prennent pas en charge PHP 8.2 ; elles acceptent PHP 8.3 et 8.4, et PHP 8.5 à partir de Drupal 11.3. Un site encore en Drupal 10 sous PHP 8.2 a donc deux chantiers liés : la version de PHP et celle de Drupal.

Un plan de migration en six étapes

  1. Inventorier. Relever la version de PHP réellement utilisée partout : serveurs, conteneurs, intégration continue, tâches planifiées. Lister les extensions et les dépendances Composer.
  2. Mesurer le blocage. Lancer composer prohibits php 8.4 (puis 8.5) et noter chaque paquet à mettre à jour ou à remplacer.
  3. Sécuriser par les tests. Avant de toucher à la version, s’assurer que les parcours critiques sont couverts par des tests automatisés, au moins sur les fonctions qui rapportent ou qui exposent des données.
  4. Corriger le code. Lire les guides de migration 8.3, 8.4 et 8.5, activer les avertissements E_DEPRECATED, et s’aider d’outils d’analyse : Rector, par exemple, applique des règles de montée de version jusqu’à la version de PHP déclarée dans composer.json.
  5. Essayer en préproduction. Même version de PHP, mêmes extensions, mêmes données de test qu’en production ; vérifier les journaux d’erreurs et les tâches planifiées, pas seulement les pages.
  6. Mettre en production avec un retour arrière prévu. Garder l’ancienne image ou l’ancien serveur prêt le temps de valider, et surveiller les journaux dans les jours qui suivent.

Et si la migration n’est pas prête à temps ?

Le 31 décembre 2026 n’éteint pas les serveurs. Mais chaque mois passé sur une branche non maintenue ajoute un risque que vous ne maîtrisez pas : une faille publiée dans le moteur PHP ne recevra plus de correctif officiel pour 8.2. Si l’échéance ne peut pas être tenue, documentez la situation, réduisez l’exposition (accès restreints, surveillance renforcée des journaux) et planifiez la migration avec une date. Vérifiez aussi la politique de votre hébergeur ou de votre distribution, qui peut maintenir ses propres paquets plus longtemps.

Pour les agences qui doivent prévenir plusieurs clients, la page Agences présente le travail en marque blanche. Pour un projet en direct, l’offre de migration décrit le déroulé au forfait, et le Diagnostic 48 h permet de chiffrer le travail avant de s’engager.

§ 03 / Sources

Sources

Sources primaires consultées pour cet article. Les dates et versions citées en proviennent.

  1. PHP — Supported Versions (calendrier officiel des branches) (site externe) www.php.net/supported-versions.php
  2. PHP — Unsupported Branches (versions en fin de vie) (site externe) www.php.net/eol.php
  3. PHP RFC : Release cycle update (2 ans de correctifs, 2 ans de sécurité) (site externe) wiki.php.net/rfc/release_cycle_update
  4. Manuel PHP — Migration de PHP 8.2 vers 8.3 (site externe) www.php.net/manual/en/migration83.php
  5. Manuel PHP — Migration de PHP 8.3 vers 8.4 (site externe) www.php.net/manual/en/migration84.php
  6. Manuel PHP — Migration de PHP 8.4 vers 8.5 (site externe) www.php.net/manual/en/migration85.php
  7. endoflife.date — PHP (données de cycle de vie) (site externe) endoflife.date/php
  8. Symfony 7.4 Release (versions de PHP requises) (site externe) symfony.com/releases/7.4
  9. Symfony 8.0 Release (versions de PHP requises) (site externe) symfony.com/releases/8.0
  10. Drupal — PHP requirements (site externe) www.drupal.org/docs/getting-started/system-requirements/php-requirements
  11. Composer — commande prohibits / why-not (site externe) getcomposer.org/doc/03-cli.md#prohibits-why-not
  12. PHP — avis de sécurité GHSA-6wmf-4rv5-p3rp (PHP2Shell, versions corrigées) (site externe) github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp

§ 04 / Questions fréquentes

Questions fréquentes

Mon application en PHP 8.2 cessera-t-elle de fonctionner le 1er janvier 2027 ?

Non. Le code continue de s’exécuter normalement. Ce qui s’arrête, ce sont les correctifs officiels : une faille découverte après le 31 décembre 2026 ne sera plus corrigée par l’équipe PHP pour la branche 8.2. Le risque augmente donc avec le temps, sans rupture visible le jour même.

Faut-il passer directement de PHP 8.2 à PHP 8.5 ?

C’est possible si votre framework et toutes vos dépendances acceptent PHP 8.5 : vous gagnez un an de support de sécurité par rapport à 8.4. Sinon, PHP 8.4 est une cible solide, maintenue jusqu’au 31 décembre 2028. Dans les deux cas, lisez les guides de migration de chaque version intermédiaire : les dépréciations s’additionnent.

Ma distribution Linux fournit encore PHP 8.2 : suis-je protégé ?

Certaines distributions maintiennent leurs propres paquets PHP avec leur propre calendrier. Vérifiez la politique de votre distribution et de votre hébergeur pour la version exacte installée. C’est un délai, pas une solution : les bibliothèques et frameworks abandonnent aussi les anciennes versions de PHP.

Combien de temps prend une migration de PHP 8.2 vers 8.4 ?

Cela dépend de la taille du code, de la couverture de tests et du nombre de dépendances à mettre à jour. Un inventaire préalable permet de découper le travail en lots et de le chiffrer avant de commencer, plutôt que de découvrir les blocages en production.

Offre liée : Migration PHP, Symfony, Drupal

PHP 8.2 sans correctifs de sécurité après le 31/12/2026, Drupal 10 en fin de vie le 09/12/2026 : migrez au forfait, comportement comparé avant et après.

Un appel de 30 min ? Proposez deux créneaux dans votre message