PHP 7.1 · Ohne Sicherheitsupdates seit 01.12.2019

PHP 7.1: seit Dezember 2019 ohne Sicherheitsupdates. Risiken, Brüche und der Weg auf PHP 8

PHP 7.1 brachte nullbare Typen und void, und es war die letzte Version mit mcrypt im Kern. Seit dem 1. Dezember 2019 gibt es keine Sicherheitsupdates mehr. Was beim Upgrade auf PHP 8.4 bricht, welche Frameworks betroffen sind und wie wir vorgehen.

Erschienen
01.12.2016
Aktiver Support bis
01.12.2018
Sicherheitsupdates bis
01.12.2019
Letztes Release
7.1.33
Empfohlenes Ziel
PHP 8.4

Termine: php.net, Supported Versions.

PHP 7.1 erschien im Dezember 2016 und wurde drei Jahre gepflegt. Seit dem 1. Dezember 2019 gibt es keine Sicherheitsupdates mehr; das letzte Release war 7.1.33. Es war die letzte Version, in der die mcrypt-Erweiterung noch zum Kern gehörte, und die erste mit nullbaren Typen und void. Beides prägt den Code, der heute noch darauf läuft.

Wo PHP 7.1 heute steht

Fast sieben Jahre ohne Pflege. Jede seit Ende 2019 gefundene Lücke ist offen, einschließlich der beiden kritischen vom 21. Oktober 2026, die nur für 8.2 bis 8.5 geschlossen wurden. Hoster haben 7.1 aus dem Angebot genommen; die typische 7.1-Anwendung läuft heute auf einem eigenen oder gemieteten Server mit einem Betriebssystem aus derselben Zeit.

Typische Stacks dieser Generation: Symfony 3.4 und frühe 4er, Laravel 5.5 und 5.6, Shopware 5.3 bis 5.5, TYPO3 8 LTS, Drupal 8. Alle diese Framework-Versionen sind ebenfalls ohne Support. Deshalb ist bei 7.1 das Framework-Upgrade fast immer Teil des Projekts.

Was beim Upgrade von 7.1 auf PHP 8 bricht

  • mcrypt ist seit 7.2 weg. In 7.1-Anwendungen steckt es in Login, Token und API-Signaturen. Ersatz: OpenSSL oder Sodium, mit Umschlüsselung der Bestände.
  • each(), create_function(), __autoload() wurden in 7.2 als veraltet markiert und in 8.0 entfernt. Auf 7.1 laufen sie ohne Meldung.
  • Geschweifte Klammern für Offsets sind seit 8.0 ein Syntaxfehler.
  • Vergleiche zwischen Text und Zahl verhalten sich seit 8.0 anders. Alte Eingabeprüfungen kippen leise.
  • Interne Funktionen werfen Fehler statt Warnungen seit 8.0. Was in 7.1 ein Eintrag im Log war, ist in 8.4 eine abgebrochene Anfrage.
  • Verschachtelte Ternär-Operatoren ohne Klammern sind seit 8.0 nicht mehr erlaubt.
  • match ist seit 8.0 reserviert; eine eigene Funktion match() lädt nicht mehr.
  • Ressourcen sind Objekte seit 8.0 (cURL, GD, XML, OpenSSL); is_resource() schlägt fehl.
  • null an interne Funktionen mit nicht nullbaren Parametern ist seit 8.1 veraltet. strlen(null), trim(null), htmlspecialchars(null) erzeugen Hinweise, bald Fehler. In 7.1-Code mit vielen Formularen kommt das hundertfach vor.
  • Dynamische Eigenschaften sind seit 8.2 veraltet, implizit nullbare Parameter seit 8.4.

Die Liste der Brüche steht im Beitrag PHP 8 Breaking Changes; wie man die Deprecations im eigenen Code findet, im Beitrag dazu. Wer wissen will, was sich zwischen 8.0 und 8.3 geändert hat, findet dort die Zwischenschritte.

Der Weg von 7.1 auf PHP 8.4

  1. Befund auf einer Kopie: Erweiterungen, Bibliotheken, Framework, Testlage, erreichbarer Code.
  2. Sicherheitsnetz: Tests um die Abläufe, deren Ausfall Geld kostet.
  3. Abhängigkeiten zuerst. Composer einführen, falls nicht vorhanden (so geht das), dann jede Bibliothek auf einen PHP-8-fähigen Stand oder Ersatz bringen. Erst wenn composer install unter 8.4 durchläuft, lohnt sich der Rest.
  4. Rector für das Mechanische, Handarbeit für mcrypt, Typ-Vergleiche und null-Behandlung.
  5. Umschalten mit Rückweg, zwei Wochen Parallelbereitschaft der alten Version.

Wie lange eine solche Migration dauert und welche Risiken dabei auftreten, beschreiben eigene Beiträge.

Für wen das nicht passt

Wenn das Framework keinen Upgrade-Pfad mehr hat und die Anwendung groß ist, wird aus dem PHP-Upgrade eine schrittweise Ablösung nach dem Strangler-Fig-Muster. Auch dann ist der erste Schritt 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.1 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.
Werkstatt-BereitschaftLaufend · Wartung & Notfall Preisab 980 €/Monat Dauerlaufend Sie haben niemanden im Haus, der das System betreut – oder wollen nach der Modernisierung nicht wieder zurückfallen.

Fragen

Was zu PHP 7.1 meistens gefragt wird

Die Anwendung nutzt mcrypt für gespeicherte Passwörter und Tokens. Was passiert damit?

mcrypt ist seit PHP 7.2 nicht mehr im Kern. Die Verschlüsselung wird auf OpenSSL oder Sodium umgestellt, und die bereits gespeicherten Daten werden einmal umgeschlüsselt, am besten beim nächsten Login des jeweiligen Nutzers. Passwörter sollten ohnehin nicht verschlüsselt, sondern gehasht sein; wenn das nicht so ist, finden wir es im Befund.

Reicht ein Upgrade auf PHP 8.1, weil mein Framework nur das unterstützt?

PHP 8.1 hat seit dem 31. Dezember 2025 selbst keine Sicherheitsupdates mehr. Ein Upgrade dorthin kauft nichts. Wenn das Framework 8.4 nicht kann, ist das Framework-Upgrade Teil des Projekts, oder das Framework wird gekapselt und schrittweise abgelöst.

Wie lange dauert das?

Der Befund zwei bis drei Werktage. Die Migration danach je nach Größe zwei bis acht Wochen, parallel zum Betrieb. Die konkrete Zahl steht im Befund. Woran die Dauer wirklich hängt, haben wir in einem eigenen Beitrag beschrieben.

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