Europe/Paris
Posts

Migrer un projet Symfony legacy de PHP 7.4 à PHP 8.1

June 15, 2026
PHP 7.4 est en fin de vie depuis longtemps : plus de correctifs de sécurité, plus de support officiel. Sur un projet backend critique tournant sur OpenShift, rester dessus n'était plus tenable, ni côté sécurité, ni côté performance. PHP 8 est nettement plus strict sur la cohérence des types entre classes parentes et enfants. Plusieurs services legacy avaient des signatures incohérentes qui passaient silencieusement en 7.4 mais levaient des erreurs fatales en 8.1. Certaines fonctions historiques (create_function, certains usages de each()) ont été supprimées. Un audit statique du code avec PHPStan en amont permet de lister ces cas avant même de changer la version d'exécution. PHP 8.1 interdit les paramètres nullable implicites sans déclaration explicite ?type. C'est le genre de warning silencieux en 7.4 qui devient bloquant en 8.1 — un bon test suite CI est indispensable pour les détecter tous.
  1. Audit statique complet avec PHPStan niveau élevé pour lister les incompatibilités avant de toucher à l'environnement d'exécution
  2. Montée de version des dépendances Composer en parallèle, package par package, en vérifiant la compatibilité PHP 8.1 de chaque librairie tierce
  3. Environnement de test dédié sur OpenShift avec la nouvelle version, pipeline Jenkins dupliqué pour valider avant bascule
  4. Bascule progressive avec possibilité de rollback rapide sur l'ancienne image de build
Le vrai coût n'était pas le changement de version PHP lui-même, mais la dette technique qu'il a fallu affronter en même temps : du code qui fonctionnait "par accident" en 7.4 et qui a nécessité une vraie clarification des contrats entre classes. Une migration de version PHP majeure n'est jamais juste une histoire de changer un numéro dans un fichier de config. C'est l'occasion de forcer une remise à niveau de la qualité du code — mieux vaut la voir comme un projet à part entière plutôt qu'une simple tâche technique.
On this page