06158 822036
Menü

Shopware 5 auf PHP 8 umstellen

PHP 7.4 bekommt seit November 2022 keine Sicherheitsupdates mehr. Hoster schalten alte Versionen ab, oft mit wenigen Wochen Vorlauf. Wir stellen Ihren Shop um, bevor der Termin da ist, und nicht am Abend danach.

Shop prüfen lassen 06158 822036

Warum das jetzt ansteht

Der Druck kommt selten von Shopware, sondern vom Hoster. Alte PHP-Versionen bekommen keine Sicherheitsupdates mehr, und irgendwann will kein Anbieter sie mehr auf seinen Maschinen haben. Die Ankündigung kommt dann per E-Mail, mit einem Datum, das oft vier bis acht Wochen entfernt ist.

Wer bis dahin nichts tut, hat danach zwei Möglichkeiten, die beide unangenehm sind: einen Shop, der unter der neuen PHP-Version Fehlerseiten ausliefert, oder einen Shop, der auf einer abgekündigten Version weiterläuft, für die es keine Patches mehr gibt.

Die Umstellung selbst ist überschaubar. Unangenehm wird sie nur durch den Zeitpunkt. Deshalb ist der richtige Moment, sie anzusehen, bevor die Mail kommt.

Was Shopware 5 überhaupt verträgt

Shopware 5 hat PHP 8 nicht von Anfang an unterstützt. Die Unterstützung kam mit der Reihe 5.7 und wurde über deren Nebenversionen schrittweise ausgeweitet. Ein Shop, der noch auf 5.6 oder älter steht, braucht deshalb zuerst ein Update innerhalb von Shopware 5, bevor PHP 8 überhaupt zur Debatte steht.

Welche PHP-Version Ihre Installation konkret verträgt, hängt von Ihrer Nebenversion ab. Das ist einer der ersten Punkte, die wir prüfen, und er entscheidet über die Reihenfolge: erst Shopware aktualisieren, dann PHP, oder beides in einem Schritt.

Wichtiger als die Herstellerangabe ist ohnehin, was in Ihrem Shop steckt. Die Freigabe gilt für den unveränderten Standard. Ihr Shop ist seit Jahren kein Standard mehr, sonst würden Sie diese Seite nicht lesen.

Was wir vor der Umstellung ansehen

Sieben Punkte. Die ersten drei entscheiden meistens darüber, ob es ein Nachmittag wird oder ein Projekt.

  • Shopware-Version und Patchstand — und ob vor der PHP-Umstellung noch ein Update innerhalb von Shopware 5 nötig ist.
  • Plugin-Inventar — jedes installierte Plugin mit Hersteller, Version und der Frage, ob es für die Ziel-PHP-Version freigegeben ist. Bei Herstellern, die nicht mehr liefern, entscheidet der Code, nicht die Freigabe.
  • Verschlüsselte Erweiterungen — Plugins mit ionCube- oder Zend-Schutz brauchen einen Loader, der zur Ziel-PHP-Version passt, und eine Plugin-Fassung, die dafür verschlüsselt wurde. Das ist der häufigste harte Blocker.
  • Eigene Erweiterungen und Core-Änderungen — alles, was über die Jahre für Sie gebaut oder direkt im Shopware-Verzeichnis geändert wurde.
  • Templates — eigene Smarty-Templates, insbesondere Stellen, an denen aus dem Template heraus PHP-Funktionen aufgerufen werden.
  • Schnittstellen — Export ins Warenwirtschaftssystem, Zahlungsanbieter, Versanddienstleister, Marktplätze. Sie laufen oft über eigene Skripte und Cronjobs, die niemand mehr auf dem Schirm hat.
  • Serverseite — verfügbare PHP-Erweiterungen, Einstellungen in der php.ini, Cronjobs, sowie die Version von MySQL oder MariaDB.

Was typischerweise bricht

Der größte Teil sind viele kleine Stellen im Code, an denen PHP 8 strenger ist als seine Vorgänger. Die findet eine Prüfung vor der Umstellung, und danach ist es Fleißarbeit. Sie treiben den Aufwand selten.

Teuer wird in aller Regel ein einziger Fall: ein verschlüsseltes Plugin, dessen Hersteller nicht mehr liefert. Dort gibt es nichts anzupassen, dort geht es um Ersatz. Genau deshalb sehen wir uns die Erweiterungen zuerst an und nicht zuletzt.

Für Technikinteressierte: die Fehlerklassen im Einzelnen

Nicht vollständig, aber das ist die Liste, an der wir uns in der Praxis abarbeiten.

In PHP 8 entfernt

Was seit Jahren als veraltet markiert war, ist jetzt weg. Trifft vor allem alten Plugin-Code und Schnipsel, die irgendwann aus einem Forum übernommen wurden.

  • each(), create_function() und money_format() gibt es nicht mehr.
  • Konstruktoren im PHP-4-Stil, bei denen die Methode so heißt wie die Klasse, gelten nicht mehr als Konstruktor. Der Code läuft weiter, tut aber nicht mehr, was er soll — die unangenehmste Sorte Fehler.
  • Der Zugriff auf einzelne Zeichen mit geschweiften Klammern, $text{0}, ist entfernt.

Aus Warnung wird Abbruch

Der größere Teil der Arbeit. Code, der jahrelang unbemerkt danebenlag, fällt jetzt auf.

  • Rechnen mit Zeichenketten, die keine Zahl sind, wirft eine Ausnahme, statt still mit Null weiterzurechnen.
  • Der Zugriff auf einen nicht vorhandenen Array-Schlüssel ist von der Notiz zur Warnung hochgestuft. Wo ein eigener Fehlerbehandler Warnungen in Ausnahmen umwandelt — in Shopware-Installationen nicht selten — bricht die Seite ab.
  • Datenbankfehler über PDO melden sich seit PHP 8 standardmäßig als Ausnahme. Code, der bisher nur auf einen Rückgabewert geprüft hat, läuft in unbehandelte Ausnahmen.

Signaturen und Vererbung

Betrifft besonders Plugins, die Shopware-Klassen erweitern.

  • Ein Pflichtparameter, der hinter einem optionalen steht, ist nicht mehr zulässig.
  • Überschriebene Methoden werden strenger daraufhin geprüft, ob sie zur Elternmethode passen. Ein Plugin, das eine Shopware-Klasse erweitert und dabei eine Kleinigkeit anders deklariert, fällt hier auf.

Verschlüsselte Plugins

Der Fall, der am häufigsten aus einer Umstellung ein Projekt macht.

  • Ein mit ionCube oder Zend geschütztes Plugin läuft nur, wenn es den passenden Loader für die Ziel-PHP-Version gibt und das Plugin selbst dafür neu verschlüsselt wurde. Beides liegt beim Hersteller.
  • Liefert der Hersteller nicht mehr, hilft kein Anpassen, weil es nichts anzupassen gibt. Dann geht es um Ersatz: eine andere Erweiterung, ein Nachbau der benötigten Funktion oder der Verzicht darauf. Was davon sinnvoll ist, hängt daran, wie tief das Plugin im Shop sitzt.

Templates und Bibliotheken

Kommt seltener vor, wird aber gern übersehen.

  • Eigene Smarty-Templates, die PHP-Funktionen direkt aufrufen, erben deren Verhaltensänderungen.
  • Bibliotheken, die in einem Plugin-Verzeichnis mitgeliefert werden, sind oft mehrere Jahre alt und selbst nicht PHP-8-fest.

Wie die Umstellung abläuft

  1. Bestandsaufnahme

    Wir sehen uns die Installation mit Zugang an und sagen, was auf dem Weg zu PHP 8 im Weg steht. Ergebnis ist eine Liste nach Dringlichkeit, mit Aufwandsschätzung.

  2. Klon auf einem Testsystem

    Dateien und Datenbank werden auf ein getrenntes System gespiegelt. Am Livesystem wird bis zur Umschaltung nichts geändert.

  3. Statische Prüfung

    Der gesamte Code wird gegen die Ziel-PHP-Version geprüft, bevor er überhaupt ausgeführt wird. Das findet den Großteil der offensichtlichen Stellen in einem Durchgang.

  4. PHP 8 einschalten und abarbeiten

    Auf dem Klon wird umgeschaltet und die Fehlerliste abgearbeitet, von unten nach oben: erst was den Aufruf abbricht, dann was falsche Ergebnisse liefert, dann Kosmetik.

  5. Die Wege durchspielen, an denen Geld hängt

    Bestellstrecke bis zur Zahlungsbestätigung, Rechnung und Lieferschein, Export in die Warenwirtschaft, Rückmeldungen des Versanddienstleisters, Marktplatzanbindung. Ein Shop, dessen Startseite lädt, ist nicht umgestellt.

  6. Umschaltung mit Rückfallweg

    Termin mit dem Hoster, Sicherung unmittelbar davor, Umschaltung, Kontrolle der Kernprozesse. Wenn etwas nicht trägt, gehen wir zurück und nicht vorwärts.

  7. Nachbeobachtung

    Die Fehlerlogs der ersten Tage sagen mehr als jeder Test. Was danach noch auffällt, räumen wir im selben Zug ab.

Was es kostet

Einen Festpreis für eine PHP-Umstellung zu nennen, ohne die Installation gesehen zu haben, wäre geraten. Der Aufwand hängt an der Zahl der Plugins, am Anteil individueller Anpassungen und daran, ob verschlüsselte Erweiterungen dabei sind.

Bestandsaufnahme, 390 € netto. Festpreis, bis zu vier Stunden und bis zu 25 Plugins. Sie erhalten einen schriftlichen Bericht mit Aufwandsschätzung für die Umstellung. Der Betrag wird vollständig angerechnet, wenn Sie innerhalb von vier Wochen einen Wartungsvertrag abschließen.

Umsetzung, 120 € netto pro Stunde. Abrechnung im 30-Minuten-Takt. Mit laufendem Wartungsvertrag geht die Arbeit zuerst gegen das monatliche Entwicklungskontingent.

Wir nennen im Bericht eine Spanne, keinen einzelnen Wert, und sagen dazu, was sie nach oben treibt. In aller Regel sind das nicht die vielen kleinen Codestellen, sondern ein oder zwei Plugins, deren Hersteller nicht mehr liefert.

Wenn sich dabei herausstellt, dass die Umstellung in keinem Verhältnis zum Nutzen steht, sagen wir das. Den Bericht haben Sie in diesem Fall trotzdem.

Häufige Fragen zur PHP-Umstellung

Muss ich für PHP 8 auf Shopware 6 wechseln?

Nein. Shopware 5 läuft in der Reihe 5.7 unter PHP 8. Wenn Ihr Shop auf einer älteren 5er-Version steht, ist der Weg dorthin ein Update innerhalb von Shopware 5, kein Systemwechsel.

Ob ein Wechsel auf Shopware 6 irgendwann wirtschaftlich wird, ist eine andere Frage, und sie hat mit der PHP-Version nichts zu tun.

Mein Hoster hat mir eine Frist gesetzt. Wie schnell geht das?

Das hängt davon ab, was in Ihrem Shop steckt. Schicken Sie uns die Adresse Ihres Shops, dann sagen wir werktags innerhalb von 4 Stunden, was von außen erkennbar ist und ob die Frist realistisch ist.

Wenn sie es nicht ist: Hoster verlängern Abschalttermine für einzelne Kunden häufiger, als man denkt, wenn ein belegbarer Plan vorliegt. Der Bericht aus der Bestandsaufnahme ist so ein Plan.

Können Sie garantieren, dass danach nichts kaputt ist?

Nein, und wer das zusagt, hat entweder kleine Shops oder ein kurzes Gedächtnis. Was wir tun, ist die Umstellung auf einem Testsystem vorzubereiten, die Prozesse durchzuspielen, an denen Geld hängt, und für die Umschaltung einen Rückfallweg bereitzuhalten.

Was in den Tagen danach noch auffällt, räumen wir ab. Das gehört zur Umstellung und wird nicht neu beauftragt.

Was passiert mit einem Plugin, das nicht mitgeht?

Wenn der Quellcode vorliegt, passen wir es an. Wenn er verschlüsselt ist und der Hersteller nicht mehr liefert, geht es um Ersatz. Beide Wege stehen mit Aufwand im Bericht, damit Sie entscheiden können. Mehr dazu auf der Seite Plugin-Anpassung.

Wie lange kann ich Shopware 5 realistisch weiterbetreiben?

Wir nennen keine Jahreszahl, die wir nicht halten können. Die Grenze setzt in der Praxis nicht Shopware, sondern Ihre Umgebung: die PHP-Version Ihres Hosters, Ihre Zahlungsanbieter und Ihre Plugins. Solange diese drei mitspielen, ist ein abgesicherter Weiterbetrieb über die nächsten Jahre realistisch. Wir sagen Ihnen, sobald sich das ändert.

Kurzeinschätzung Ihres Shops, kostenlos

Schicken Sie uns die Adresse Ihres Shops. Wir sehen uns die Installation von außen an und melden uns mit den Befunden, die sich so feststellen lassen: Shopware-Version, PHP-Version, Verschlüsselung, offen erreichbare Bereiche, veraltete Komponenten im Frontend.

Dafür brauchen wir keine Zugangsdaten. Was in Ihrem Shop an Plugins, individuellen Anpassungen und Schnittstellen steckt, sehen wir dabei allerdings nicht, dafür ist die Bestandsaufnahme da.

Antwort werktags innerhalb von 4 Stunden. Kostenlos und ohne weitere Verpflichtung.

URL Ihres Shops — damit wir vor dem Rückruf kurz draufschauen können.

Anrufen: 06158 822036 Shop prüfen