Warum es drängt

PHP 7.4 bekommt seit dem 28. November 2022 keine Sicherheitsupdates mehr. Daraus folgen zwei Dinge.

Hoster schalten alte Versionen inzwischen ab, oft mit kurzer Frist. Wer dann erst anfängt, migriert unter Zeitdruck, und das ist die schlechteste Ausgangslage für eine Migration.

Außerdem zieht das Ökosystem weiter. Neue Composer-Pakete setzen PHP 8 voraus. Sie können keine aktuellen Bibliotheken mehr einbinden und bleiben auch dann auf altem Stand, wenn in einer Abhängigkeit eine Sicherheitslücke gefunden wird.

Was beim Sprung auf PHP 8 bricht

TypeError

Aus Warnungen werden Abbrüche

Bekommt eine interne Funktion einen falschen Typ, gab es in PHP 7 eine Warnung und null zurück. In PHP 8 ist das ein TypeError und die Anfrage bricht ab. Code, der jahrelang lief, steht plötzlich.

vergleiche

Vergleiche verhalten sich anders

PHP 8 hat die Regeln für lose Vergleiche zwischen Strings und Zahlen geändert. 0 == "foo" ergibt jetzt false statt true. Das betrifft ausgerechnet die Stellen, an denen Berechtigungen geprüft und Beträge verglichen werden. Solche Fehler sind still: nichts stürzt ab, das Ergebnis ist nur falsch.

@-operator

Der @-Operator hilft nicht mehr

Das @-Zeichen unterdrückt in PHP 8 keine fatalen Fehler mehr. Wo früher ein Problem stillschweigend übergangen wurde, steht heute die Anwendung.

Die Details stehen im Ratgeber: PHP 7.4 End of Life und PHP-8-Breaking-Changes-Checkliste.


Warum das planbar ist

PHP-7-Code lässt sich maschinell gut auf PHP 8 umschreiben. Rector übernimmt die wiederkehrenden Muster, PHPStan zeigt die Stellen, die von Hand müssen. Beides passiert, bevor irgendetwas deployed wird.

Deshalb ist dieser Sprung meist eine Sache von Wochen. Die stillen Fehler wie der veränderte Vergleich sind der Grund, warum es trotzdem Tests braucht: Sie fallen sonst niemandem auf, bis die Rechnung nicht stimmt.

Läuft bei Ihnen noch eine ältere Version? PHP 5 auf PHP 8 migrieren.

Häufig gestellte Fragen

Reicht ein Zwischenschritt auf PHP 8.0?

Nein. PHP 8.0 ist selbst am Support-Ende. Sinnvolles Ziel ist 8.3 oder 8.4.

Wie lange dauert die Migration von 7.4 auf 8?

Bei sauberem 7.4-Code mit Tests oft wenige Wochen.

Läuft unser Shop währenddessen weiter?

Ja. Wir migrieren daneben und schalten um, wenn die Tests durchlaufen.

Warum brauchen wir Tests, wenn Rector das meiste automatisch umbaut?

Weil die gefährlichen Fehler still sind. Der veränderte Vergleich zwischen Strings und Zahlen wirft keine Fehlermeldung, das Ergebnis ist einfach falsch. Das fällt ohne Tests niemandem auf.

Noch auf PHP 7.4?

Wir sehen uns den Code an und sagen Ihnen, wie viel davon Rector erledigt. Kostenlos.

Ersteinschätzung anfragen