Où en est le support de PHP 8.0 et 8.1 ?
| Critère | PHP 8.0 | PHP 8.1 |
|---|---|---|
| Sortie | novembre 2020 | novembre 2021 |
| Fin des correctifs de bugs | novembre 2022 | novembre 2023 |
| Fin des correctifs de sécurité | novembre 2023 | décembre 2025 |
Statuts vérifiés le 08/11/2026 sur les pages officielles de version.
Les ruptures à traiter en premier
- Bloquant · 8.1Passer null à un paramètre non nullable d'une fonction interne est déprécié (strlen(null), trim(null)…) : source massive d'avertissements.source
- Bloquant · 8.1Les méthodes internes non finales exigent un type de retour compatible dans les classes filles ; sinon dépréciation, masquable par #[\ReturnTypeWillChange].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, auditer la dette technique avec Bear Scan chiffre la dette qui ralentira chaque étape.
Passer à PHP 8.1
- BloquantPasser null à un paramètre non nullable d'une fonction interne est déprécié (strlen(null), trim(null)…) : source massive d'avertissements.source
- BloquantLes méthodes internes non finales exigent un type de retour compatible dans les classes filles ; sinon dépréciation, masquable par #[\ReturnTypeWillChange].source
- BloquantMySQLi : le mode d'erreur par défaut passe de silencieux à exceptions ; restauration possible avec mysqli_report(MYSQLI_REPORT_OFF).source
- À traiterConversions implicites float vers int avec perte de précision dépréciées (clés de tableau, types int en mode coercitif, opérateurs).source
- À traiterSerializable sans __serialize()/__unserialize() est déprécié ; strftime(), strptime() et date_sunrise() aussi.source
Extensions
- Migration ressource vers objet pour finfo, FTP, IMAP, LDAP, pgsql et autres extensions.source
- PDO::ATTR_STRINGIFY_FETCHES transforme désormais les booléens en '0' ou '1' ; le chiffrement par défaut d'openssl_encrypt passe de RC2-40 à AES-128-CBC.source
Pièges rencontrés en migration
- Le mode exceptions de MySQLi peut transformer en erreur fatale du code qui ignorait silencieusement les échecs de requête ; auditer les appels avant déploiement.source
- Les bibliothèques tierces non à jour inondent les logs de dépréciations de types de retour ; vérifier les versions de vendor/ avant la bascule.source
Rector : LevelSetList::UP_TO_PHP_81
Guide officiel de migration vers PHP 8.1
À lire sur le blog : Migration PHP 8.1 vers 8.3 : les incompatibilités que personne ne mentionne
Ce que PHP 8.1 vous apporte
- 8.1 : Énumérations natives (enum), y compris à valeur de support.source
- 8.1 : Propriétés readonly et expressions new dans les initialiseurs (valeurs par défaut de paramètres, attributs).source
- 8.1 : Fibers pour l'exécution coopérative et type de retour never.source
- 8.1 : Syntaxe de callable de première classe (strlen(...)), types d'intersection et constantes de classe final.source
- 8.1 : Préfixe octal explicite 0o16 et décompression de tableaux avec clés chaîne.source
Combien coûte cette migration ?
À partir de 1 500 € HT
Pour confier la migration à Bear Upgrade, 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 à former votre équipe à Claude 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 : Passer null à un paramètre non nullable d'une fonction interne est déprécié (strlen(null), trim(null)…) : source massive d'avertissements (PHP 8.1) ; Les méthodes internes non finales exigent un type de retour compatible dans les classes filles ; sinon dépréciation, masquable par #[\ReturnTypeWillChange] (PHP 8.1).
PHP 8.0 ne reçoit plus de correctifs de sécurité depuis novembre 2023.
En grande partie : le set LevelSetList::UP_TO_PHP_81 applique en une passe les transformations mécaniques jusqu’à PHP 8.1. 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.0 → 8.1 donne l’estimation de votre projet ; le prix ferme est fixé au cadrage.