Trace 9 - Migration projet Symfony legacy
Adaptation d'un projet Symfony ancien à un environnement plus moderne.
Adaptation à un environnement logiciel existant
Organisation et pilotage d'un chantier technique
Trace 9
Migrer un projet ancien sans perdre le fonctionnement
Trace 9 - Extrait du diff composer.json : passage de PHP 7 vers PHP 8.3, ajout de composer-patches et mise à jour de dépendances compatibles.
La Trace 9 ci-contre est un extrait de diff montrant la migration d'un projet
Symfony développé en 2018. Ce projet utilisait des versions anciennes de PHP, Composer, Node.js et Webpack. Avant de pouvoir ajouter sereinement de nouvelles fonctionnalités, il fallait déjà réussir à faire tourner le projet et comprendre ses contraintes. Cette phase m'a demandé de lire et respecter un existant fragile avant de modifier les dépendances.
Les lignes visibles dans la Trace 9 représentent les modifications les plus structurantes : passage vers PHP 8.3, mise à jour de Composer, adaptation des dépendances et ajout de patchs. Chaque changement devait être vérifié pour éviter de casser le comportement déjà en place. La migration a donc été faite en cherchant à isoler les changements et tester progressivement.
- Passage de PHP 7 vers PHP 8.3 et de Composer 1 vers Composer 2.
- Passage de Node ancien vers Node 24, remplacement de
node-sassparsasset migration Webpack 3 vers 5. - Correction de points de casse :
Doctrine\Persistence\ObjectManager, routes sans page par défaut, options elFinder et patch Composer.
Changements principaux
| Partie | Ancien état | Nouveau travail |
|---|---|---|
| PHP | PHP 7 | PHP 8.3 |
| Composer | Composer 1 | Composer 2 |
| Node | ancienne version | Node 24 |
| Front build | Webpack 3 + node-sass | Webpack 5 + sass |
| Doctrine | Doctrine\Common\Persistence | Doctrine\Persistence |
| Compatibilité | warnings et options obsolètes | patchs et corrections ciblées |
La première étape a été de trouver un environnement capable de lancer le projet. Comme les versions attendues étaient anciennes, l'installation a demandé plusieurs essais avant de trouver une base exploitable. Une fois le projet lancé, la migration a été faite progressivement : dépendances PHP, build frontend, routes, imports Doctrine, options obsolètes et Dockerfile. La difficulté venait moins du volume de données que de la compatibilité entre Symfony/PHP et de la préservation du comportement existant tout au long de la Trace 9.