PHP 7.2 – wann macht ein Upgrade von PHP 7.0 oder 7.1 auf 7.2 Sinn?

14.05.2018
extendedLogo

PHP 7.2 ist jetzt auf unseren Debian 8 Clustern verfügbar. Wann ein Upgrade von PHP 7.0 oder 7.1 auf die neue Version Sinn macht, erklären wir im Beitrag.

Was ist neu bei PHP 7.2?

PHP hat einige Neuerungen in PHP 7.2 integriert. Unter anderem:

  • Libsodium
    Es wurde die Verschlüsselungsbibliothek Libmcrypt (oder Mcrypt) entfernt und durch Libsodium als Core-Extension ersetzt. Alle Mcrypt-Funktionen wurden bereits seit PHP 7.1 mit der Notiz E_DEPRECATED versehen und stehen in PHP 7.2 gar nicht mehr zur Verfügung. Da die beiden Bibliotheken nicht API-kompatibel sind, ist es notwendig, dass Anwendungen oder Plugins, welche Libmcrypt verwenden, auf Libsodium umgeschrieben werden. Als Übergangslösung für selbst geschriebene Anwendungen kann ggf. die Bibliothek mcrypt_compat verwendet werden.
  • Argon2i
    Ein neues Feature ist Argon2i, ein Passwort-Hashing-Algorithmus. Dieser Algorithmus hat beim „Passwort-Hashing-Wettbewerb“ 2015 gegen 23 weitere Algorithmen gewonnen.
  • „Object“-Datentyp
    Sprachlich gibt es die Neuerung des generischen Datentyps „object„. Der Datentyp „object“ kann für zum Beispiel als vom System erwarteter Typehint in Funktionssignaturen verwendet werden, wenn ein Rückgabewert oder Parameter einer Funktion ein beliebiges Objekt sein darf.
  • Modulname anstelle von Dateiname
    Mit 7.2 werden nicht mehr die jeweiligen Dateinamen geladen, sondern die Namen der PHP-Erweiterungen. Zuvor musste zur php.ini folgende Zeile hinzugefügt werden: „extension = phpmodulefile.so“. Nun reicht der Modulname: „extension = phpmodulname“. Dies erleichtert es, eine vorhandene php.ini auf eine andere Plattform zu übertragen.
  • abstrakte Methoden überschreiben
    Es ist nun unter bestimmten Bedingungen möglich, eine abstrakte Methode zu überschreiben, wenn eine abstrakte Klasse von einer anderen abstrakten Klasse erbt. Die Überschreibung kann beispielsweise verwendet werden, um Parameter mit Typehints genauer zu spezifizieren.

Zudem wurden die SSL- bzw. TLS-Konstanten überarbeitet, so das tls:// und STREAM_CRYPTO_METHODTLS* nun alle TLS Versionen aktivieren und nicht nur 1.0. Genaue Details zu den Änderungen finden sich im Changelog von PHP.

Kann die Performance durch PHP 7.2 gesteigert werden?

Kurzum: ja.

Laut den Testergebnissen von Phoronix gibt es beim Upgrade von der Version PHP 7.1 auf 7.2 eine ähnliche Performance-Steigerung wie beim vorherigen Upgrade der Version 7.0 auf 7.1. Nach ausgiebigem Testen von PHP 7.2 auf verschiedenen Systemen mit unterschiedlichen Workloads konnte festgestellt werden, dass sich die Performance um 8 bis 12 % gesteigert hat.

Benchmark Suite von Phoronix

Benchmark von Phoronix. Quelle: phoronix.com, 2018

Was ist vor einem Upgrade zu beachten?

Bevor Sie Ihre PHP-Version upgraden, sollten Sie die vollständige Kompatibilität Ihrer Anwendung zu dieser Version sicherstellen. Häufig ist dies nicht der Fall, weil einzelne Komponenten die neue Version nicht unterstützen. In der folgenden Tabelle zeigen wir, welche Anwendungen mit der neuen PHP-Version kompatibel sind.

Kompatibilität von Anwendungen mit PHP 7.2

Software Kompatibilität Anmerkung
Contao kompatibel
Drupal kompatibel Ab Drupal 8.5.0 wird PHP 7.2 unterstützt.
Oxid nicht kompatibel
Magento kompatibel Seit dem Patch vom 14. September 2018 ist Magento 1 mit PHP 7.1 und 7.2 kompatibel. Magento 2 ist ab Version 2.3 kompatibel.
Matomo (Piwik) experimentell kompatibel keine offizielle Angabe, Inkompatibilitäten wurden allerdings bereits beseitigt
Shopware kompatibel Shopware 5.3.5 ist kompatibel mit 7.1 und 7.2, aber nur mit unverschlüsselten Plugins. IonCube verschlüsselte Plugins sind aktuell nur mit PHP 7.0.x kompatibel. Ab Version 5.5 ist Shopware kompatibel mit PHP 7.2, da die Shopware Plugins quelloffen sind.
Typo3 kompatibel Version 7 und 8 unterstützen beide die neueste PHP-Version. Ab 9.0 wird PHP 7.2 sogar zwingend vorausgesetzt!
WooCommerce kompatibel
WordPress kompatibel WordPress empfiehlt explizit den Einsatz von 7.2
Xt:commerce teilweise kompatibel Xt:commerce ist ab Version 5.1 mit PHP 7.2 kompatibel

Magento und PHP 7.2

Magento 1

Am 14. September 2018 hat Magento 1 den Patch „PHP 7.2 Support“ veröffentlicht, damit Magento 1 mit PHP 7.1 und PHP 7.2 kompatibel ist. Dieser Patch fügt der Magento Installation die mcrypt_compat Bibliothek hinzu und entfernt Inkompatibilitäten im Magento Code.

Da die älteren PHP-Versionen wie 5.6 und 7.0 nur noch bis Dezember 2018 Sicherheitsupdates erhalten, empfehlen wir den Patch zu installieren. Besonders gegenüber PHP 5 wird dadurch auch die Performance des Shops stark gesteigert.

Sollten Sie PHP 7 mit Plugins von Inchoo nutzen, empfiehlt Inchoo die Plugins zu deinstallieren und stattdessen diesen Magento-Patch zu verwenden. Mehr über Inchoo und die technischen Details des Patches erfahren Sie unter: Magento 1 official PHP 7.2 Patches.

Wichtig: Bitte beachten Sie, dass auch die aktuelle Magento 1 Version 1.9.3.10 den PHP 7.2 Patch noch nicht enthält. Dieser muss nach dem Update separat installiert werden.

Magento 2

Ab Version Magento 2.3 wird das neue PHP-Upgrade unterstützt. Gleichzeitig fällt mit Magento 2.3 die Unterstützung für PHP 7.0 weg.

Zunächst unterstützt Magento 2.3 die neue PHP-Version nur experimentell. Da in der ersten Phase noch mit einer Instabilität aufgrund von möglichen Fehlern zu rechnen ist, empfehlen wir ein Upgrade auf 7.2 erst zu einem späteren Zeitpunkt vorzunehmen und vorerst (weiterhin) PHP 7.1 zu nutzen. Weitere Informationen zur Umstellung von PHP 7.0 auf 7.1 bzw. 7.2 unter Magento 2.3 finden sich im Magento Devblog.

Shopware

Shopware ist ab Version 5.5 kompatibel. In früheren Versionen ist die Anwendung ab 5.3.5 mit PHP 7.2 kompatibel, allerdings nur bei dem Einsatz unverschlüsselter Plugins. Die verschlüsselten Shopware Plugins werden über ionCube 9 verschlüsselt. PHP7.2 ist allerdings nur mit dem ionCube in Version 10 kompatibel, weil es keine mit dem ionCube 9 Encoder erstellten Dateien lesen kann. (Mehr Infos dazu finden Sie bei Shopware.)

Zu den nicht kompatiblen Plugins gehören unter anderem die Shopware eigenen Erweiterungen, wie:

  • FACT-Finder for Shopware
  • Pickware Mobile
  • Pickware POS
  • UPS Adapter
  • Gift vouchers
  • Set Articles
  • Austrian Post Adapter
  • Dunning
  • PostNL Adapter
  • Address label
  • Drop Shipping

Insgesamt werden Tausende an Plugins für Shopware von Drittanbietern angeboten. Ob die von Ihnen genutzten Plugins verschlüsselt sind, können Sie im Shopware Store durch die gezielte Suche nach Ihrer Erweiterung überprüfen. Verschlüsselte Extensions werden dort durch folgendes Symbol gekennzeichnet:

Symbol Mit hoher Wahrscheinlichkeit nutzen auch die Drittanbieter ionCube 9 zur Verschlüsselung für ihre Extensions, ebenso wie Shopware. Dies müsste im Einzelnen geprüft werden. Mit ionCube 9 ist die Nutzung von PHP 7.2 nicht möglich. Voraussetzung für die Nutzung von Shopware 5 mit PHP 7.1 und 7.2 sind ionCube 10 verschlüsselte oder quelloffene Plugins. Diese quelloffenen Plugins stehen ab Version 5.5 zur Verfügung.

WordPress, WooCommerce, Typo3 und Drupal

WordPress ist ab Version 4.9 mit dem PHP-Upgrade kompatibel und empfiehlt sogar explizit die Nutzung von 7.2. Es könnte allerdings sein, dass noch nicht alle verwendeten Plugins die neue PHP-Version unterstützen. Dies müsste im Einzelnen geprüft werden.

Tipp: Zur Prüfung der Kompatibilität lässt sich das Plugin „PHP Compatibility Checker“ von WP Engine nutzen.

Das WordPress Plugin WooCommerce ist mit dem PHP Upgrade kompatibel.

Bei Typo3 wird PHP 7.2 bereits ab Version 7 unterstützt. Die kommende Typo3 Version 9 benötigt sogar zwingend PHP 7.2. Weitere Informationen zur Kompatibilität finden sich in der Typo3 Roadmap.

Drupal ist seit der kürzlich veröffentlichten Version Drupal 8.5, die viele Detailverbesserungen mit sich bringt, auch kompatibel mit PHP 7.2. Frühere Versionen sind nicht kompatibel. Auch hier gilt es zu prüfen, ob die genutzten Extensions ebenfalls kompatibel sind.

PHP 7.2 bei maxcluster einrichten

In unserem Managed Center lässt sich mit einfachem Klick auf „PHP Versionen“ > „PHP 7.2 installieren“ die Version aktivieren (Screenshot 1). Dies ist sowohl für NGINX als auch für Apache Webserver möglich. Allerdings ist für die Integration ein Debian 8 Cluster notwendig. Kontaktieren Sie unseren Support, falls Sie noch einen Debian 7 Cluster verwenden.

Screenshot 1: PHP 7.2 Installation bei maxcluster

Screenshot 1: PHP 7.2 Installation bei maxcluster

Nach der Installation kann wie gewohnt die PHP-Version für jeden vHost einzeln eingestellt werden (Screenshot 2). Sollte es unerwartet zu Problemen mit dem Betrieb von PHP 7.2 kommen, lässt sich die Version auf diese Weise auch jederzeit wieder auf die ältere Version zurückstellen.

Screenshot 2: PHP 7.2 für einen vHost aktivieren

Screenshot 2: PHP 7.2 für einen vHost aktivieren

Unsere Handlungsempfehlung

Wir empfehlen die Nutzung von Php 7.2 oder PHP 7.3 für alle Shopsysteme. Ein Wechsel von einer älteren PHP-Version ist dringend ratsam, da PHP 7.1 nur noch bis Dezember 2019 Sicherheitsupdtes erhält.

Shopware ist ab Version Shopware 5.5 quelloffen und nicht mehr durch IonCube verschlüsselt. Dadurch unterstützt Shopware 5.5 auch PHP 7.2. Die früheren Shopware Versionen wurden durch den IonCube Loader verschlüsselt, ebenso wie die Plugins. Da ionCube (bis Version 10) nicht mit PHP 7.2 kompatibel ist, lässt sich für ältere Shopware Versionen (vor 5.5) nur PHP 7.1 verwenden. Da PHP 7.1 aber nur noch bis Dezember 2019 Sicherheitsupdates erfährt, empfehlen wir dringend einen Wechsel auf PHP 7.2 oder PHP 7.3 und eine entsprechend höhere Shopware Version zu wechseln.

Erfahren Sie mehr über PHP 7.3 in unserem Blogbeitrag.

Bild: duiwoy /depositphotos.com, 2018