Die Anwendung wird weiterhin gebraucht.
Das System trägt Umsatz oder Kernprozesse und soll in den nächsten Jahren verlässlich weiterentwickelt werden.
PHP-Upgrade & Migration
Läuft Ihr System auf PHP 5.6, 7 oder einem frühen 8, läuft es ohne Sicherheitsupdates. Gescheut wird das Upgrade trotzdem, weil niemand sagen kann, was es auslöst: Abhängigkeiten ohne Nachfolger, Code ohne Tests, und die Leute, die ihn geschrieben haben, sind weg. Ich mache daraus ein Vorhaben mit Reihenfolge, Rückweg und Termin, während das System weiterläuft.
Einstieg als Befund zum Festpreis, Umsetzung nach Umfang. Auch für Systeme ohne Dokumentation und ohne die Leute, die sie gebaut haben.
Remote aus Deutschland. Direkt mit mir, ohne Agentur dazwischen.
Die Ausgangslage
Die Sprachänderungen von PHP 7 auf 8 sind überschaubar und gut dokumentiert. Was Vorhaben scheitern lässt, steht daneben: eine Bibliothek, deren letzter Commit sieben Jahre alt ist. Ein Framework, das drei Hauptversionen zurückliegt. Eine Erweiterung, die es für PHP 8 nie gab. Und ein Datenbanktreiber, der stillschweigend anders vergleicht als vorher.
Kommt Ihr System aus PHP 5, ist die Lage eine andere, und ich sage das offen: Der Bruch liegt dort nicht zwischen 7 und 8, sondern zwischen 5 und 7. Die alten Datenbankfunktionen sind ersatzlos entfernt, aus Fehlern wurden Ausnahmen, und Konstruktionen wie each() oder create_function() gibt es nicht mehr. Solche Vorhaben laufen deshalb in zwei Etappen über eine Zwischenversion, nicht in einem Sprung – jede Etappe für sich produktiv, jede für sich zurückdrehbar.
Dazu kommt die Lage, in der die meisten Anfragen entstehen: Der Code läuft, verdient Geld, und die Menschen, die ihn geschrieben haben, sind nicht mehr da. Es gibt keine Tests, keine Dokumentation und niemanden, der sagen kann, warum an einer Stelle gerundet wird. Ein Upgrade ist dann kein Wartungsvorgang, sondern eine Wette darauf, dass man alles gefunden hat.
Genau deshalb fängt die Arbeit nicht im Code an, sondern mit einem Befund: Was bricht, was bricht nur vielleicht, und was davon berührt Geld. Erst danach lässt sich sagen, ob das Vorhaben zwei Wochen dauert oder drei Monate.
Kommt Ihnen etwas davon bekannt vor?Für wen das passt
Das Angebot richtet sich an CTOs und technische Leiter mit einer produktiven PHP-Anwendung auf einer alten oder nicht mehr unterstützten Version. Security, Hosting oder neue Bibliotheken machen weiteres Abwarten zum Risiko.
Das System trägt Umsatz oder Kernprozesse und soll in den nächsten Jahren verlässlich weiterentwickelt werden.
Abhängigkeiten, Testlücken und unbekannte Seiteneffekte verlangen kleine Schritte mit messbarem Rückweg.
Das Upgrade muss neben laufenden Releases stattfinden und so übergeben werden, dass das bestehende Team danach weiterarbeiten kann.
Was ich mache
Statische Analyse über den gesamten Bestand, getrennt nach echten Brüchen, geänderter Semantik und aufgegebenen Funktionen. Dazu die Abhängigkeiten: Welche Pakete gibt es für die Zielversion, welche sind aufgegeben, welche brauchen einen Ersatz. Ergebnis ist eine Liste mit Fundstelle, Schwere und geschätztem Aufwand.
Wo keine Tests existieren, entstehen zuerst Characterization Tests: Sie halten fest, was das System heute tut, unabhängig davon, ob es richtig ist. Das Netz muss nicht vollständig sein, es muss die Stellen abdecken, die angefasst werden, und die Wege, an denen Geld hängt.
Rector erledigt den mechanischen Teil: Typangaben, veraltete Aufrufe, geänderte Signaturen. Regelsatz je Zielversion, in kleinen Durchläufen, jeder als eigener Commit und einzeln überprüfbar. Jeder Lauf wird zuerst als Vorschau erzeugt und durchgesehen, denn das Werkzeug meldet nicht, wo es unsicher war: Es ändert, worauf eine Regel passt, und lässt alles andere stehen. Was danach offen bleibt, kommt von Hand auf die Liste.
Der größere Teil des Aufwands steckt selten in der Sprache, sondern in Composer. Pakete kommen auf gepflegte Stände, Aufgegebenes wird ersetzt, und wo ein Framework mehrere Hauptversionen zurückliegt, wird der Sprung in eigene Schritte zerlegt. Ein Symfony- oder Laravel-Upgrade läuft nicht nebenbei mit.
Nicht ein Stichtag, sondern eine Folge kleiner Umstellungen, jede einzeln ausrollbar und einzeln zurückdrehbar. Wo es die Architektur zulässt, läuft die neue Version zuerst für einen Teil des Verkehrs. Was dabei auffällt, fällt bei einem Prozent auf, nicht bei hundert.
Zum Abschluss stehen die Dinge, die verhindern, dass in drei Jahren dasselbe Gespräch geführt wird: statische Analyse in der Pipeline, Abhängigkeitsprüfung als wiederkehrender Lauf, und eine Notiz, wann die jetzt gewählte Version aus der Unterstützung fällt.
Läuft Ihr PHP noch auf einer Version ohne Sicherheitsupdates?
Schicken Sie mir die Eckdaten. Sie bekommen eine Einschätzung, was das Upgrade bei Ihnen bedeutet, bevor Sie etwas beauftragen.
Ablauf
Vier Schritte, und nach dem ersten wissen Sie, worauf Sie sich einlassen. Kein Schritt setzt voraus, dass Sie den nächsten beauftragen.
PHP-Version, Framework, ungefähre Größe, Testabdeckung, wo es deployt wird. Ein Lesezugriff auf das Repository reicht für den Befund; produktive Zugänge braucht es erst später.
Statische Analyse und Abhängigkeitsprüfung, Ergebnis als Liste mit Fundstellen, Schwere und Aufwand, dazu eine Reihenfolge. Damit können Sie entscheiden, auch gegen mich.
Testnetz an den Stellen, die angefasst werden. Danach die automatisierten Durchläufe, dann die Handarbeit. Jeder Schritt ein Commit, jeder Commit einzeln nachvollziehbar.
Schrittweise in Produktion, mit Rückweg. Zum Schluss Prüfungen in der Pipeline und eine Übergabe, damit Ihr Team ab dann selbst weitermacht.
Einstieg
Startpreis für den Befund. Die Umsetzung wird nach Umfang angeboten, zum Festpreis, bevor sie beginnt.
Der Einstieg ist ein Befund, keine Umsetzung: Sie erfahren, was ein Upgrade bei Ihnen bedeutet, bevor Sie darüber entscheiden müssen.
Was Sie bekommen
Was Sie nicht bekommen
Das Ergebnis
Sicherheitsupdates kommen wieder, und die Frage im nächsten Audit ist beantwortet, ohne dass jemand eine Ausnahme begründen muss.
Aktuelle Abhängigkeiten heißt: Ein neues Paket lässt sich installieren, ohne dass drei andere blockieren. Das war vorher der eigentliche Stillstand.
Die Tests, die für das Upgrade entstanden sind, gehören danach Ihnen. Sie sichern die nächste Änderung genauso ab wie diese.
Ob und wie viel schneller Ihre Anwendung auf PHP 8 läuft, hängt an ihr, nicht an der Sprache. Deshalb wird vorher und nachher an denselben Wegen gemessen, und die Zahl steht im Abschlussbericht.
Eingesetzte Technologien
Nachweis
Die meisten Anbieter kennen das Ziel. Bei einem alten System entscheidet aber, ob jemand auch die Ausgangslage kennt: warum eine Stelle so geschrieben ist, wie sie geschrieben ist, und was ihre Ablösung anrichtet. Zend Technologies gibt es unter dem Namen nicht mehr, die Prüfungen von damals also auch nicht. Für die Datenbankseite kommt eine Oracle-Zertifizierung auf MySQL 5 dazu, denn dort liegen die stilleren Fallen: Zeichensätze, Sortierregeln und ein Strict Mode, der bisher Geduldetes ablehnt.


Aus der Praxis
Ein anstehendes PHP-8-Update war der Auslöser für die Modernisierung einer über 20 Jahre alten Redaktionsplattform. Migration, neue Sucharchitektur und Plattformwechsel liefen als drei getrennte Vorhaben mit eigenem Rückweg, bei laufendem Redaktionsbetrieb.
Case Study lesenEbenfalls aus echten Projekten
Der häufigste Ausgangspunkt dieser Anfragen, ausführlich: welche Brüche PHP 8.0 bis 8.4 mitbringen, warum nur die stillen Verhaltensänderungen gefährlich sind, und was den Aufwand wirklich treibt.
Artikel lesen
Mit wem Sie es zu tun haben
Ich bin Tim Rutte. Über 20 Jahre Softwareentwicklung, davon der größte Teil in PHP, von 5.x bis heute. Sie sprechen mit der Person, die Ihren Code anfasst, vom ersten Gespräch bis zur Übergabe.
Häufige Fragen
Der Befund kostet ab 1.250 Euro netto und sagt Ihnen, was die Umsetzung kostet. Ohne Analyse ist jede Zahl geraten: Zwei Anwendungen mit derselben Zeilenzahl können um den Faktor zehn auseinanderliegen, je nachdem, ob die Abhängigkeiten gepflegt sind und ob es Tests gibt. Die Umsetzung wird nach dem Befund zum Festpreis angeboten, bevor sie beginnt.
Stand August 2026: PHP 8.2 bis zum 31. Dezember 2026, PHP 8.3 bis Ende 2027, PHP 8.4 bis Ende 2028 und PHP 8.5 bis Ende 2029. Alles bis einschließlich 8.1 ist ohne Unterstützung, PHP 7.4 seit Ende 2022. Als Ziel empfehle ich in der Regel 8.4: eine Fassung, die lange genug draußen ist, dass die Bibliotheken nachgezogen haben, und die noch über zwei Jahre Unterstützung hat.
Nein, das ist ein regelmäßiger Fall. Er ist aber ein anderes Vorhaben als ein Sprung von 7.4: Zwischen 5 und 7 liegen die härteren Brüche, die alten Datenbankfunktionen sind ersatzlos entfernt, aus Fehlern wurden Ausnahmen. Deshalb läuft der Weg über eine Zwischenversion in zwei Etappen, jede einzeln produktiv und einzeln zurückdrehbar. Ich bin Zend Certified Engineer für PHP 5.3, kenne die Ausgangswelt also nicht nur aus der Migrationsdokumentation. Was Ihr Fall bedeutet, steht nach dem Befund fest, nicht vorher.
Ja, das ist der Normalfall. Dann entsteht vor dem ersten Eingriff ein Netz aus Characterization Tests, das festhält, was das System heute tut. Es muss nicht vollständig sein: Es deckt die Stellen ab, die angefasst werden, und die Wege, an denen Geld hängt. Dieses Netz bleibt Ihnen danach erhalten.
Nein. Das Upgrade läuft als Folge kleiner Umstellungen, jede einzeln ausrollbar und einzeln zurückdrehbar. Bei der Redaktionsplattform aus meinen Case Studies lief die Modernisierung ohne einen Tag Ausfall, obwohl Sprache, Suche und Plattform gewechselt wurden. Entscheidend ist, dass möglichst wenig gleichzeitig in Bewegung ist: Sprachwechsel, Suche und Plattform waren dort drei getrennte Vorhaben mit eigenem Rückweg.
Das ist der häufigste harte Fall, und er hat drei Antworten: eine gepflegte Alternative mit derselben Aufgabe, eine eigene schmale Umsetzung genau dessen, was Sie tatsächlich benutzen, oder das Abtrennen des Bereichs hinter eine eigene Schnittstelle. Welche Antwort trägt, steht im Befund samt Aufwand, statt sich mitten in der Umsetzung zu zeigen.
Das ist die Ausgangslage in den meisten dieser Vorhaben. Es gibt keine Dokumentation, keine Tests und niemanden mehr zu fragen. Der erste Schritt ist dann kein Umbau, sondern zu verstehen, was das System heute wirklich tut, samt der Eigenarten, die niemand geplant hat und auf die sich trotzdem jemand verlässt. Diese Bestandsaufnahme gehört ohnehin zum Befund.
Ja, aber als eigenes Vorhaben, nicht nebenbei. Ein Sprung über mehrere Symfony- oder Laravel-Hauptversionen ist regelmäßig größer als der Sprachwechsel selbst und braucht eine eigene Reihenfolge. Beides gleichzeitig zu machen ist der zuverlässigste Weg, hinterher nicht mehr zu wissen, woran ein Fehler lag.
Messbar schneller, aber die Größenordnung hängt an Ihrer Anwendung, nicht an der Sprache. Ich nenne dazu keine Prozentzahl aus einer Broschüre. Was ich stattdessen tue: vorher und nachher an denselben Wegen messen und die Zahl in den Abschlussbericht schreiben.
Weitere Leistungen
Gewachsene Systeme schrittweise modernisieren: Strangler-Fig statt Rewrite, laufender Betrieb unangetastet, jeder Schritt umkehrbar.
Mehr erfahrenVon einer alten Symfony-Fassung auf einen gewarteten Zweig: Deprecations abbauen, Bundles ersetzen, Version für Version, im laufenden Betrieb.
Mehr erfahrenEin PHP-System ohne Entwickler: erst verstehen, was es tut, dann wieder änderbar machen. Bestandsaufnahme zum Festpreis, danach Weiterentwicklung oder Übergabe an Ihr Team.
Mehr erfahren