Aller au contenu principal

Migration PHP · 8.0 → 8.1

Migrer de PHP 8.0 à PHP 8.1

PHP 8.0 ne reçoit plus de correctifs de sécurité depuis novembre 2023 ; PHP 8.1 ne reçoit plus de correctifs de sécurité depuis décembre 2025. Une seule version à franchir, documentée par le guide de migration 8.1 du manuel PHP. 3 ruptures à fort impact sur le parcours. Première rupture à traiter : passer null à un paramètre non nullable d'une fonction interne est déprécié (strlen(null), trim(null)…) : source massive d'avertissements.

Où en est le support de PHP 8.0 et 8.1 ?

Support de PHP 8.0 et 8.1
CritèrePHP 8.0PHP 8.1
Sortienovembre 2020novembre 2021
Fin des correctifs de bugsnovembre 2022novembre 2023
Fin des correctifs de sécuriténovembre 2023décembre 2025

Statuts vérifiés le 08/11/2026 sur les pages officielles de version.

Les ruptures à traiter en premier

  1. 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
  2. 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

Pour aller plus loin

Sources

Votre migration PHP 8.0 → 8.1, livrée en Merge Requests

CI au vert garantie 7 jours après le merge. Un appel de cadrage suffit pour fixer le périmètre, le prix et le délai.