Portfolio BUT2
Intégration entreprise

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.

  1. Passage de PHP 7 vers PHP 8.3 et de Composer 1 vers Composer 2.
  2. Passage de Node ancien vers Node 24, remplacement de node-sass par sass et migration Webpack 3 vers 5.
  3. Correction de points de casse : Doctrine\Persistence\ObjectManager, routes sans page par défaut, options elFinder et patch Composer.

Changements principaux

PartieAncien étatNouveau travail
PHPPHP 7PHP 8.3
ComposerComposer 1Composer 2
Nodeancienne versionNode 24
Front buildWebpack 3 + node-sassWebpack 5 + sass
DoctrineDoctrine\Common\PersistenceDoctrine\Persistence
Compatibilitéwarnings et options obsolètespatchs 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.

On this page