Aller au contenu principal
Retour au blog

Symfony 7.4 LTS : ce qu'il faut savoir avant de migrer

Flavien Métivier31 janvier 20265 min

Symfony 7.4 LTS arrive avec la promesse d'un support sécurité jusqu'en novembre 2029. C'est la version de référence pour les projets entreprise qui veulent de la stabilité sans sacrifier la modernité. Si tu es sur Symfony 6.4 LTS ou une version 7.x non-LTS, voici tout ce qu'il faut savoir avant de migrer.

Quoi de neuf dans Symfony 7.4 LTS

Symfony 7.4 LTS stabilise toutes les features introduites entre la 7.1 et la 7.3. Il n'y a pas de nouvelles features majeures dans une release LTS — c'est justement le but. Les APIs marquées comme expérimentales dans les versions mineures deviennent stables et garanties sur toute la durée du support.

  • Attributes natifs — Les annotations sont définitivement supprimées. Tout passe par les attributes PHP 8.
  • Security modernisé — Les composants de sécurité stabilisés depuis 7.x deviennent le standard LTS.
  • Messenger amélioré — Transport Redis stabilisé, meilleure gestion des failures et retries.
  • PHP 8.2 minimum — Support officiel de PHP 8.2, 8.3 et 8.4.
  • Doctrine ORM 3.x — Support complet de Doctrine ORM 3 avec les nouvelles conventions.

Timeline de support

Voici les dates clés à retenir pour planifier ta migration.

  • Symfony 6.4 LTS — Bug fixes jusqu'en novembre 2026, sécurité jusqu'en novembre 2027
  • Symfony 7.4 LTS — Bug fixes jusqu'en novembre 2028, sécurité jusqu'en novembre 2029
  • Fenêtre de migration recommandée — Migrer vers 7.4 LTS avant fin 2026 pour bénéficier de 3 ans de support sécurité complet

Migration depuis Symfony 6.4 LTS

C'est le chemin de migration le plus courant. Le changement majeur : la conversion des annotations vers les attributes PHP 8. Symfony 7.0 a supprimé le support des annotations, donc ce passage est obligatoire.

La bonne nouvelle : Rector automatise 90 % du travail. Voici la procédure pas à pas.

# Étape 1 : Créer une branche de migration
git checkout -b migration/sf-7.4

# Étape 2 : Configurer Rector
# (voir configuration ci-dessous)

# Étape 3 : Dry-run pour voir les changements
docker compose run --rm php vendor/bin/rector process --dry-run

# Étape 4 : Appliquer les transformations
docker compose run --rm php vendor/bin/rector process

# Étape 5 : Supprimer les bundles obsolètes
docker compose run --rm php composer remove doctrine/annotations
docker compose run --rm php composer remove sensio/framework-extra-bundle

# Étape 6 : Mettre à jour les dépendances
# Modifier composer.json : "symfony/*": "^7.4"
docker compose run --rm php composer update

# Étape 7 : Valider
docker compose run --rm php bin/console cache:clear
docker compose run --rm php vendor/bin/phpunit
docker compose run --rm php vendor/bin/phpstan analyse

Besoin d'un expert Symfony ?

Réserver un appel

La configuration Rector pour la migration :

<?php
// rector.php
use Rector\Config\RectorConfig;
use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Symfony\Set\SymfonySetList;
use Rector\Symfony\Set\SensiolabsSetList;

return RectorConfig::configure()
    ->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
    ->withSets([
        SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
        DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
        SensiolabsSetList::ANNOTATIONS_TO_ATTRIBUTES,
        SymfonySetList::SYMFONY_70,
        SymfonySetList::SYMFONY_71,
        SymfonySetList::SYMFONY_72,
        SymfonySetList::SYMFONY_73,
        SymfonySetList::SYMFONY_74,
    ]);

Migration depuis Symfony 7.x (non-LTS)

Si tu es déjà sur Symfony 7.1, 7.2 ou 7.3, la migration est beaucoup plus simple. Les attributes sont déjà en place, l'architecture est compatible. Il suffit de gérer les dépréciations mineures entre versions.

# Vérifier les dépréciations
docker compose run --rm php bin/console debug:container --deprecations

# Mettre à jour composer.json
# "symfony/*": "^7.4"
docker compose run --rm php composer update

# Vider le cache et tester
docker compose run --rm php bin/console cache:clear
docker compose run --rm php vendor/bin/phpunit

Checklist avant de migrer

  • PHP >= 8.2 installé et configuré
  • Tous les tests passent sur la version actuelle (baseline)
  • Aucune dépréciation non résolue (bin/console debug:container --deprecations)
  • Rector installé et configuré pour la version cible
  • Backup de la base de données effectué
  • doctrine/annotations prêt à être supprimé
  • sensio/framework-extra-bundle remplacé par les attributes natifs
  • Configuration des routes : type: attribute au lieu de type: annotation
  • Doctrine configuré avec type: attribute dans le mapping

Les pièges courants

  • Routes introuvables après migration — Vérifier que config/routes.yaml utilise type: attribute et non type: annotation
  • Attributes en doublon — Rector peut laisser des annotations en plus des attributes. Vérifier manuellement après la conversion.
  • Bundles tiers incompatibles — Certains bundles ne supportent pas encore 7.4. Vérifier la compatibilité avec composer why-not symfony/framework-bundle 7.4
  • Doctrine mapping cassé — Toujours valider avec bin/console doctrine:schema:validate après migration

La migration vers Symfony 7.4 LTS est un investissement qui sécurise ton projet pour les trois prochaines années. Si tu as un projet Symfony 5.x ou 6.x à migrer, notre offre Bear Upgrade propose une migration automatisée avec Rector, audit de code et garantie de fonctionnement. Réserve un appel pour estimer ta migration.

Cet article vous a plu ? Partagez-le !

Besoin d'un expert Symfony ?

20 ans d'expérience sur l'écosystème PHP/Symfony.