Où en est le support de PHP 8.2 et 8.3 ?
| Critère | PHP 8.2 | PHP 8.3 |
|---|---|---|
| Sortie | décembre 2022 | novembre 2023 |
| Fin des correctifs de bugs | décembre 2024 | décembre 2025 |
| Fin des correctifs de sécurité | décembre 2026 | décembre 2027 |
Statuts vérifiés le 08/11/2026 sur les pages officielles de version.
Les ruptures à traiter en premier
- À traiter · 8.3Incrémenter ou décrémenter des chaînes vides ou non numériques est déprécié ; utiliser str_increment(). L'incrément de chaînes non numériques est soft-déprécié.source
- À traiter · 8.3range() durci : TypeError pour objets, tableaux et ressources, ValueError pour un pas à 0 ou négatif sur une plage croissante, avertissement pour une chaîne vide.source
Le chemin de migration, étape par étape
Chaque version mineure de PHP a son guide de migration officiel ; on les applique dans l’ordre, avec la CI au vert entre deux étapes. Avant de lancer le chantier, mesurer la dette avec un Bear Scan chiffre la dette qui ralentira chaque étape.
Passer à PHP 8.3
- À traiterIncrémenter ou décrémenter des chaînes vides ou non numériques est déprécié ; utiliser str_increment(). L'incrément de chaînes non numériques est soft-déprécié.source
- À traiterrange() durci : TypeError pour objets, tableaux et ressources, ValueError pour un pas à 0 ou négatif sur une plage croissante, avertissement pour une chaîne vide.source
- À traiterAffecter un index négatif $n à un tableau vide fait désormais suivre $n+1 au lieu de 0.source
- Mineurget_class() et get_parent_class() sans argument sont dépréciées ; assert_options() et les constantes ASSERT_* aussi.source
- MineurUn programme proche du dépassement de pile peut désormais lever une Error (zend.max_allowed_stack_size, zend.reserved_stack_size).source
Extensions
- Variante MT_RAND_PHP de Mt19937 dépréciée dans l'extension Random.source
- mb_strimwidth() avec largeur négative et plusieurs API Phar, LDAP, SQLite3 et Zip sont dépréciées.source
Pièges rencontrés en migration
- Le calcul de revalidation OPcache évolue : opcache_get_status()['scripts'][n]['revalidate'] contient maintenant un horodatage Unix, ce qui peut casser des outils de monitoring.source
- Appeler proc_get_status() plusieurs fois renvoie maintenant toujours la bonne valeur (résultat mis en cache sur POSIX) ; la clé 'cached' permet de retrouver l'ancien comportement.source
Rector : LevelSetList::UP_TO_PHP_83
Guide officiel de migration vers PHP 8.3
À lire sur le blog : Migration PHP 8.1 vers 8.3 : les incompatibilités que personne ne mentionne · Docker multi-stage builds : image PHP 8.3 de 800 Mo à 80 Mo
Ce que PHP 8.3 vous apporte
- 8.3 : Constantes de classe, d'interface, de trait et d'enum typées.source
- 8.3 : Attribut #[\Override] qui vérifie qu'une méthode existe bien dans le parent ou l'interface implémentée.source
- 8.3 : Accès dynamique aux constantes de classe avec C::{$name} et initialiseurs de variables statiques arbitraires.source
- 8.3 : Réinitialisation des propriétés readonly dans __clone() et classes anonymes readonly.source
- 8.3 : Syntaxe de repli pour les variables ini et closures créées depuis des méthodes magiques acceptant les arguments nommés.source
Combien coûte cette migration ?
À partir de 1 500 € HT
Pour une migration Bear Upgrade livrée en Merge Requests, Rector tourne d’abord en dry-run sur les transformations mécaniques, Claude Code traite les cas que Rector ne couvre pas, puis un développeur senior relit chaque Merge Request. Votre équipe veut reprendre la main ensuite ? Pensez à apprendre à piloter Claude Code sur votre code. Exemple concret : la migration Symfony d’un e-commerce bordelais, et après la migration, la maintenance des versions garde le socle à jour.
Questions fréquentes
À traiter en premier : Incrémenter ou décrémenter des chaînes vides ou non numériques est déprécié ; utiliser str_increment(). L'incrément de chaînes non numériques est soft-déprécié (PHP 8.3) ; range() durci : TypeError pour objets, tableaux et ressources, ValueError pour un pas à 0 ou négatif sur une plage croissante, avertissement pour une chaîne vide (PHP 8.3).
PHP 8.2 reste couvert par les correctifs de sécurité jusqu’en décembre 2026.
En grande partie : le set LevelSetList::UP_TO_PHP_83 applique en une passe les transformations mécaniques jusqu’à PHP 8.3. Restent les changements de comportement (valeurs de retour, erreurs devenues fatales, extensions retirées), à couvrir par les tests et une relecture humaine.
Une migration Bear Upgrade démarre à 1 500 € HT. Pour une application Symfony, le calculateur pré-rempli avec PHP 8.2 → 8.3 donne l’estimation de votre projet ; le prix ferme est fixé au cadrage.
Pour aller plus loin
- PHP 8.6 arrive le 19 novembre, PHP 8.2 expire le 31 décembre
- Migration PHP 8.1 vers 8.3 : les incompatibilités que personne ne mentionne
- Docker multi-stage builds : image PHP 8.3 de 800 Mo à 80 Mo
- PHP 8.3 en prod : Fibers, readonly classes et constantes typées
- PHP 8.3 : le guide pratique — enums, readonly et named arguments