Alte Symfony-Version updaten: Von Symfony 2/3 auf die aktuelle LTS

Symfony 2 läuft noch. Symfony 3 auch. Aber beides ist längst End of Life, und ein symfony update alte version ist überfällig. Was das konkret bedeutet, warum der Sprung schwieriger ist als ein normales PHP-Versions-Update und wie er trotzdem gelingt: das erklärt dieser Artikel.
Was bedeutet End of Life bei Symfony?
Symfony ist ein PHP-Framework. Es liefert Grundbausteine für Web-Anwendungen: Routing, Sicherheit, Datenbankanbindung, Formulare. Viele professionelle PHP-Projekte aus den 2010er Jahren wurden damit gebaut.
Wie PHP selbst hat Symfony einen klar definierten Lebenszyklus. Jede Version erhält zunächst aktive Unterstützung, dann nur noch Sicherheits-Updates, dann gar nichts mehr.
Symfony 2 ist seit November 2018 End of Life. Symfony 3 seit November 2021. Wer heute noch auf einer dieser Versionen betreibt, erhält keine Sicherheits-Updates mehr.
Neue Sicherheitslücken werden gefunden, öffentlich dokumentiert, aber nicht mehr behoben. Das Risiko wächst mit jedem Monat.
Was macht ein Symfony-Versions-Update besonders komplex?
Ein PHP-Versions-Update ist schon kein Kleinkram. Ein Symfony-Versions-Update ist oft aufwändiger.
Der Grund: Symfony legt selbst Spielregeln fest. Die Kernbibliotheken definieren, wie Komponenten zusammenarbeiten, wie Konfiguration funktioniert, welche Schnittstellen existieren. Wenn Symfony diese Spielregeln zwischen Versionen ändert, müssen alle Anwendungsteile angepasst werden.
Von Symfony 2 auf 3 war schon ein großer Schritt. Von Symfony 2 oder 3 auf die aktuelle LTS (Symfony 6.4 oder 7.2) sind es mehrere Generationen.
Das bedeutet in der Praxis:
Geänderte Verzeichnisstruktur. Symfony 4 führte eine neue Ordnerstruktur ein. Was in Symfony 2 unter app/, src/ und web/ lag, ist seither anders organisiert. Bestehende Anwendungen müssen entsprechend angepasst werden.
Weggefallene Bundles. Symfony nutzt sogenannte Bundles, also modulare Pakete. Viele Bundles aus der Symfony-2-Ära werden nicht mehr gepflegt. Wer darauf angewiesen ist, muss Alternativen finden oder die Funktionalität selbst übernehmen.
Neue Dependency-Injection-Syntax. Die Art, wie Dienste in Symfony konfiguriert und verknüpft werden, hat sich zwischen Version 2 und der aktuellen LTS grundlegend verändert. Das betrifft oft große Teile der Konfigurationsdateien.
PHP-Mindestanforderungen. Symfony 6.4 setzt PHP 8.1 voraus, Symfony 7.2 sogar PHP 8.2. Wer noch PHP 7 betreibt, muss zuerst PHP aktualisieren, bevor das Symfony-Update überhaupt möglich wird.
Welche Risiken entstehen ohne das Update?
Wer technische Schulden nicht begleicht, zahlt sie irgendwann auf andere Weise. Bei veralteten Symfony-Versionen sieht das konkret so aus:
Offene Sicherheitslücken. Das Symfony-Sicherheitsteam veröffentlicht bekannte Schwachstellen regelmäßig. Für End-of-Life-Versionen werden keine Patches mehr bereitgestellt. Die Lücken bleiben offen, die Dokumentation der Schwachstellen jedoch nicht.
Abhängigkeiten, die veralten. Symfony-Anwendungen nutzen viele Pakete über Composer, das PHP-Paketverwaltungssystem. Viele dieser Pakete stellen ihre Unterstützung für alte Symfony-Versionen ein. Sicherheits-Updates für einzelne Pakete lassen sich dann nicht mehr einspielen.
DSGVO-Risiko. Veraltete Software, die personenbezogene Daten verarbeitet, kann ein Compliance-Problem sein. Die DSGVO verlangt angemessene technische Schutzmaßnahmen. Eine Anwendung ohne aktive Sicherheits-Updates erfüllt diese Anforderung nicht.
Entwickler werden schwerer zu finden. Erfahrene Symfony-Entwickler arbeiten mit der aktuellen Version. Wer mit Symfony 2 oder 3 Unterstützung sucht, braucht jemanden, der sich mit Systemen von vor zehn Jahren auskennt. Das schränkt den Markt erheblich ein, und die Kosten steigen entsprechend.
Der realistische Weg von Symfony 2 oder 3 zur aktuellen LTS
Es gibt keinen Knopf für ein symfony update alte version. Es gibt einen Plan.
Bestandsaufnahme: Was läuft überhaupt?
Zuerst muss klar sein, womit man es zu tun hat. Welche Symfony-Version ist im Einsatz? Welche Bundles werden verwendet? Welche PHP-Version liegt darunter? Gibt es automatisierte Tests?
Ohne Antworten auf diese Fragen lässt sich kein realistischer Aufwand schätzen. Dieser Schritt klingt simpel, zeigt aber oft Überraschungen: undokumentierte Abhängigkeiten, selbst geschriebene Bundles ohne Wartungshistorie, PHP-Versionen die zwei Generationen zurückliegen.
PHP erst, dann Symfony
Symfony 6.4 setzt PHP 8.1 voraus. Wer noch PHP 7 betreibt, beginnt mit dem PHP-Upgrade. Erst wenn PHP auf einem aktuellen Stand ist, folgt das Symfony-Update.
Das erhöht den Gesamtaufwand, ist aber der einzig solide Weg. Wer versucht, Symfony zu aktualisieren, während PHP 7 läuft, stößt schnell auf Grenzen.
Stufenweise Migration
Ein Sprung direkt von Symfony 2 auf 7.2 ist theoretisch denkbar, aber riskant. Besser: schrittweise vorgehen.
Symfony 2 auf 3 ist ein bekannter Pfad. Symfony 3 auf 4 ebenso. Ab Symfony 4 folgt der Weg über 5 und 6 auf 7. Jede Stufe lässt sich einzeln testen und absichern.
Das kostet Zeit. Es minimiert aber das Risiko, am Ende eine funktionierende Anwendung zu haben, die niemand mehr versteht.
Bundles prüfen und ersetzen
Für jeden aktiven Bundle muss geprüft werden, ob er mit der Zielversion kompatibel ist. Viele alte Bundles haben Nachfolger oder wurden in den Symfony-Kern integriert. Manche haben keine Entsprechung mehr.
In letzterem Fall muss die Funktionalität entweder selbst übernommen oder durch eine Alternative ersetzt werden. Das ist oft der zeitintensivste Teil des gesamten Updates.
Tests aufbauen oder erweitern
Wer keine automatisierten Tests hat, fährt bei einer Migration blind. Es ist sinnvoll, zumindest die kritischsten Abläufe vor dem Update mit Tests abzusichern. Das erlaubt nach dem Upgrade zu prüfen, ob die Anwendung noch korrekt funktioniert.
Wenn Tests bisher fehlten, ist das ein Punkt, den man ohnehin addressieren sollte. Eine Migration ist oft der Anlass dafür.
Testumgebung, dann Produktion
Kein Upgrade direkt in der laufenden Anwendung. Eine separate Testumgebung bildet die Produktion ab. Das Upgrade wird dort durchgeführt, getestet und validiert. Erst dann folgt die Umstellung der echten Anwendung.
Wie lange dauert das und was kostet es?
Ehrliche Antwort: Das kommt auf die Anwendung an.
Eine überschaubare Symfony-3-Anwendung mit wenigen Bundles und guter Testabdeckung kann in zwei bis vier Wochen auf die aktuelle LTS gebracht werden.
Eine gewachsene Symfony-2-Anwendung aus 2013, mit vielen selbst entwickelten Bundles, ohne Tests, ohne Dokumentation: Das sind Monate. In solchen Fällen lohnt manchmal eine parallele Neuentwicklung der kritischsten Teile mehr als eine vollständige Migration.
Das kann niemand ohne Analyse sagen. Wer eine fundierte Einschätzung braucht, braucht zuerst jemanden der in den Code schaut.
Was den Aufwand wesentlich beeinflusst:
- Qualität und Alter der Codebasis
- Anzahl und Pflege der genutzten Bundles
- Vorhandensein von Tests und Dokumentation
- PHP-Version, auf der die Anwendung aktuell läuft
- Anzahl externer Integrationen und Schnittstellen
Wann lohnt eine Migration, wann ein Neustart?
Diese Frage hat keine pauschale Antwort. Aber es gibt Anhaltspunkte.
Eine Migration lohnt sich, wenn die Kernlogik der Anwendung komplex und wertvoll ist, die Codebasis trotz Alter nachvollziehbar strukturiert ist und eine Schritt-für-Schritt-Umstellung technisch möglich ist.
Ein Neustart wird ernsthaft erwogen, wenn die Anwendung kaum dokumentiert ist, wesentliche Bundles keine Nachfolger haben und der Migrationsaufwand den Wert einer Neuentwicklung übersteigt.
Oft ist die Antwort: beides. Kritische Teile werden neu entwickelt, stabiler Kern wird migriert.
Fazit: Warten macht das Symfony-Update teurer, nicht leichter
Ein symfony update alte Version wird nicht einfacher, je länger man wartet. Jedes weitere Jahr erhöht das Sicherheitsrisiko, schränkt die Weiterentwicklung ein und verkleinert den Kreis der Entwickler, die helfen können.
Wer Symfony 2 oder 3 betreibt, hat guten Grund zu handeln. Nicht weil etwas passiert ist, sondern damit nichts passiert.
Sprechen Sie uns an. Das Erstgespräch ist kostenlos. Wir schauen uns Ihr System an und sagen Ihnen ehrlich, wie groß der Weg zur aktuellen LTS ist und welche Schritte sinnvoll sind.


