Eine allgemeine Anleitung von Symfony.
Achtung: alle genannten Befehle in der Shell ausführen, nicht im Verzeichnis. Also ddev ssh starten.
Falls in der upzudatenenden Version von sensio/frameworks-extra-bundle verwendet wird, dieses mit composer remove sensio/frameworks-extra-bundle entfernen da es nicht mehr gepflegt wird und die Funktionalität im Core von Symfony bzw. PHP enthalten ist.
Ein guter Ausgangspunkt ist immer, zuerst composer update auszuführen.
Mit Hilfe des Rectors kann der Code analysiert und zum Teil automatisch an die neue Version angepasst werden: composer require rector/rector --dev – Recipe ausführen Nach der Installation müssen in der rector.php im Projektroot noch Anpassungen vorgenommen werden – diese wird erzeugt, wenn der Rector zum ersten Mal gestartet wird. Die Änderungen:
den Kommentar bei ->withPhpSets() entfernen
->withSets([
SymfonySetList::SYMFONY_70,
SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
])
einfügen. Hierbei bei SYMFONY_ auf die Version achten – sollte zu der passen, die in der composer.json eingetragen ist. Sowie folgendes:
use Rector\Symfony\Set\SymfonySetList;
use Rector\Doctrine\Set\DoctrineSetList;
In der composer.json unter config folgendes einfügen:
"platform": {
"php": "8.3.10"
}
Auch hier wieder auf die korrekte Version achten.
Dann, wenn noch nicht vorhanden, den Schlüssel extra: mit folgendem Inhalt einfügen:
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.3.*"
}
},
Damit einhergehend können dann auch alle vorhandenen Versionen von Symfony-Modulen von der bisher eingetragenen Version auf * geändert werden. Sowohl unter require: als auch unter require-dev:. Aber nur an den Stellen, wo die Versionsnummer wirklich mit der Symfonyversion übereinstimmt. Vor allem bei irgendwelchen Bundles werden die bestehenden Versionsnummern belassen.
Dann kann composer update gestartet werden.
Aufgerufen wird der Rector über vendor/bin/rector.
Die von Rector vorgenommenen Änderungen prüfen und nicht blind übernehmen. Vor allem bei IsGranted aufpassen, dass die richtige Bibliothek verwendet wird: Symfony\Component\Security\Http\Attribute\IsGranted
composer recipes:update ausführen. Anschließend mit git status prüfen was passiert ist. Insbesondere bei Meldungen both modified: aufpassen und in PhpStorm über Rechtsklick auf die Datei und Git / Resolve Conflicts... entscheiden, welche Änderung übernommen werden soll.
In der composer.json unter extra:symfony:require die gewünschte Version eintragen und in require:php auf die richtige Version achten.
Dann mit composer update ein Update versuchen. Bei Fehlermeldungen am besten von hinten her versuchen, die fehlerhaften Bibliotheken separat updzudaten: composer update bibliothek #.#.
Oft hilft es auch, in der composer.json die meuternden Bibliotheken von Hand auf die nächste Version zu setzen und dann composer update aufzurufen.