PHP 7.3 · Ohne Sicherheitsupdates seit 06.12.2021

PHP 7.3: seit Dezember 2021 ohne Sicherheitsupdates. Der Weg auf PHP 8 ist kürzer, als er aussieht

PHP 7.3 war die Version der Jahre 2019 und 2020 und ist seit dem 6. Dezember 2021 ohne Sicherheitsupdates. Der Code darauf ist meist schon Composer-basiert und kennt die Deprecations. Was beim Upgrade auf PHP 8.4 trotzdem bricht und wie wir in Etappen vorgehen.

Erschienen
06.12.2018
Aktiver Support bis
06.12.2020
Sicherheitsupdates bis
06.12.2021
Letztes Release
7.3.33
Empfohlenes Ziel
PHP 8.4

Termine: php.net, Supported Versions.

PHP 7.3 erschien im Dezember 2018 und wurde bis zum 6. Dezember 2021 gepflegt; das letzte Release war 7.3.33. Es ist die Version, auf der viele Projekte stehengeblieben sind, weil der nächste Schritt PHP 8.0 hieß und der sich nach Arbeit anhörte. Fünf Jahre später sind die Lücken seit Ende 2021 offen, einschließlich der beiden kritischen vom 21. Oktober 2026.

Wo PHP 7.3 heute steht

Hoster schalten 7.3 ab oder haben es bereits getan; manche bieten kostenpflichtigen Weiterbetrieb. Typische Stacks: Laravel 6 und 7, Symfony 4.4 und 5.0, TYPO3 9 und 10 LTS, Shopware 5.6, WordPress-Installationen mit alten Plugins, viele Eigenentwicklungen auf Composer-Basis. Das ist die gute Nachricht an 7.3: Composer ist meist vorhanden, das Framework hat einen Upgrade-Pfad, und E_DEPRECATED steht im Log.

Das Risiko liegt weniger im Code als in der Umgebung: Ein Server mit PHP 7.3 läuft fast immer auf einem Betriebssystem, das ebenfalls am Ende ist. Beim Upgrade wandert die Anwendung deshalb oft auf einen neuen Server, und beides zusammen ist ein Projekt.

Was beim Upgrade von 7.3 auf PHP 8 bricht

  • Vergleiche zwischen Text und Zahl seit 8.0. Das ist der Bruch, der still passiert: 0 == "abc" ist falsch, switch auf gemischten Typen springt anders, in_array() ohne strikten Modus findet andere Treffer.
  • Fehler statt Warnungen. Interne Funktionen werfen seit 8.0 TypeError und ValueError. count(null), strlen([]), array_key_exists() auf einem Objekt: In 7.3 ein Logeintrag, in 8.4 ein Abbruch.
  • PDO wirft Ausnahmen seit 8.0, mysqli seit 8.1. Code, der if ($stmt === false) prüft, bekommt nie ein false mehr, sondern eine Ausnahme, die niemand fängt.
  • Verschachtelte Ternär-Operatoren ohne Klammern sind seit 8.0 ein Fehler.
  • match ist seit 8.0 reserviert, Ressourcen sind Objekte (cURL, GD, XML, OpenSSL, Zlib).
  • Der Signatur-Wechsel bei implode(): Die Argumentreihenfolge (Trenner zuerst) ist seit 8.0 die einzige erlaubte.
  • null an interne Funktionen ist seit 8.1 veraltet. In Formular-Code kommt trim($_POST['x'] ?? null) an vielen Stellen vor.
  • Dynamische Eigenschaften seit 8.2, ${var}-Interpolation in Zeichenketten seit 8.2, implizit nullbare Parameter seit 8.4: alles noch Hinweise, aber jeder davon wird in einer kommenden Version ein Fehler.
  • Bibliotheken. Guzzle 6, PHPUnit 7 und 8, alte Doctrine- und Twig-Versionen, PHPExcel: Sie laufen nicht unter 8.4 und brauchen ein Update oder einen Ersatz.

Die vollständige Liste steht unter PHP 8 Breaking Changes. Wer den Sprung zu PHP 8.4 und seinen neuen Möglichkeiten machen will, findet dort, was danach besser wird.

Der Weg von 7.3 auf PHP 8.4

  1. Befund auf einer Kopie: composer install unter 8.4 versuchen, PHPStan auf dem Code laufen lassen, die Testsuite unter 8.4 starten. Das Ergebnis ist die Liste der Arbeit.
  2. Sicherheitsnetz um die Abläufe, deren Ausfall Geld kostet, soweit es noch fehlt.
  3. Abhängigkeiten zuerst: Composer-Pakete auf PHP-8-fähige Stände, Blocker ersetzen.
  4. Rector für das Mechanische, Handarbeit für Typ-Vergleiche, Datenbank-Fehlerbehandlung und null-Fälle. Strikte Typen einführen lohnt sich an den Stellen, die Rector anfasst.
  5. Umschalten mit Rückweg, bei Bedarf zusammen mit dem Serverwechsel.

Was so eine Migration an Zeit braucht und welche Risiken sie hat, steht in eigenen Beiträgen.

Für wen das nicht passt

Wer auf 7.3 ein Framework ohne Upgrade-Pfad betreibt, etwa CakePHP 2 oder Yii 1, braucht einen Ablöseplan statt eines PHP-Upgrades. Der erste Schritt bleibt derselbe: ein aktueller Interpreter unter dem alten Code, damit die Zeit bis zur Ablösung abgesichert ist.

Kosten

Die Pakete für den Weg von PHP 7.3 auf PHP 8.4

Ab-Preise netto. Verbindlich wird es mit dem Festpreis nach dem Befund, und der Befund wird auf jedes Folgepaket angerechnet.

PaketPreisDauerFür wen
BefundAnalyse Preisab 2.980 € Dauer2–3 Werktage Sie brauchen eine belastbare Grundlage für eine Entscheidung oder ein Budget – keine Schätzung aus dem Bauch.
Minimal-MigrationUmsetzung · das Nötigste Preisab 9.800 € Dauer2–6 Wochen Ihr Hoster schaltet PHP 7 ab, ein Audit verlangt eine unterstützte Version – und Sie brauchen das schnell, nicht schön.

Fragen

Was zu PHP 7.3 meistens gefragt wird

Warum ist 7.3 noch so verbreitet?

Weil 7.3 die Version war, als viele Projekte das letzte Mal Budget für Infrastruktur hatten. Laravel 6 und 7, Symfony 4.4 und 5.0, TYPO3 9 und 10, Shopware 5.6 liefen darauf stabil. Danach kam PHP 8.0 mit den Typ-Änderungen, und das Upgrade wurde verschoben. Fünf Jahre später steht es immer noch an.

Der Code läuft unter 7.3 ohne Deprecation-Warnungen. Wie viel Arbeit ist es dann?

Weniger als bei älteren Versionen, aber nicht null. Die Änderungen von 8.0 (Typ-Vergleiche, Fehler statt Warnungen, Datenbank-Ausnahmen) kündigen sich in 7.3 nicht als Warnung an. Sie zeigen sich erst unter PHP 8, deshalb ist der Testlauf auf einer Kopie der eigentliche Befund.

Kann der Betrieb während der Migration weiterlaufen?

Ja. Wir arbeiten auf einer Kopie, in Git, mit Tests um die kritischen Abläufe. Produktion wird umgestellt, wenn alles grün ist und Sie abgenommen haben, in einer Randzeit und mit Rückweg.

Nächster Schritt: Minimal-Migration (ab 9.800 €)

Drei kurze Schritte im Formular, dann melden wir uns innerhalb eines Werktags. Wer noch nicht so weit ist, nimmt den kostenlosen Kurz-Check.

Minimal-Migration anfragen