Blog

10. Juli 2017

PHP 7.1 – Wann ein Upgrade von 7.0 auf 7.1 Sinn macht

PHP 7.1 Upgrade

[Aktualisiert: 15.05.2018] PHP 7.1 ist gegenwärtig nicht mit jeder Anwendung kompatibel. Ob sich ein Umstieg von PHP 7.0 auf PHP 7.1 für die Betreiber von Onlineshops überhaupt lohnt, haben wir im Beitrag zusammengefasst.

In unserem Managed Center bieten wir nun eine Installation der neuesten PHP-Versionen 7.1 und PHP 7.2 an. Vorab sollte genau geprüft werden, in welchen Fällen ein Upgrade möglich ist.

Was ist neu bei PHP 7.1?

PHP 7.1 ist seit Dezember 2016 verfügbar und wird bis Dezember 2019 (EOL) mit Security Updates versorgt. Mit dem Upgrade sind einige Neuerungen hinzugekommen und die Performance hat sich minimal verbessert. Ein Benchmark von Phoronix (siehe Balkendiagramm) zeigt, dass sich die Performance um etwa 4 % Prozent verbessert hat – bei ungefähr gleichem Speicherverbrauch. Andere Benchmarks haben sehr ähnliche Ergebnisse in Bezug auf die Performance erzielt.

 

Wichtige Neuerungen

1. Nullable types:

Beispiel:

function testReturn(): ?string
{
           if(…)
                  return ‚elePHPant‘;
           else
                  return null;

}

Funktionen können Null zurückgeben

2. Neue Array Syntax wie Symmetric array destructuring bzw. Support von „key in list()“:

[$id1, $name1] = $data;

Der obige Code lässt sich nun als Alternative verwenden zu:

list($id1, $name1) = $data;

Außerdem ist das Ganze nun auch mit assoziativen Arrays möglich. Zum Beispiel:

// list() style
list(„id“ => $id1, „name“ => $name1) = $data;
// [] style
[„id“ => $id1, „name“ => $name1] = $data;

3. Multi catch exception handling:

<?php
try
{
          // some code
}
catch (FirstException | SecondException $e)
{
         // handle first and second exceptions
}

4. Unterstützung von negativen string offsets:

<?php
$string = ‚bar‘;
echo „The last character of ‚$string‘ is ‚$string[-1]‘.\n“;

Dies erzeugt die Ausgabe: „The last character of ‚bar‘ is ‚r’“.

Was ist vor einem Upgrade zu beachten?

Bevor Sie Ihre PHP-Version upgraden, sollten Sie die vollständige Kompatibilität Ihrer Anwendung und aller Erweiterungen mit PHP 7.1 sicherstellen. Häufig ist dies nicht der Fall, weil einzelne Komponenten Version 7.1 nicht unterstützen. Im Besonderen ist hier ionCube zu beachten. Mit dem ionCube Loader 10 gibt es zwar seit August 2017 eine Version, welche unter PHP 7.1 und sogar 7.2 lauffähig ist. Dieser kann allerdings nur Dateien entschlüsseln, welche mit dem ionCube Encoder in der Version 10 erstellt wurden. Frühere ionCube Versionen sind mit PHP 7.1 nicht lauffähig. Dadurch ist es nicht in jedem Fall möglich mit ionCube verschlüsselten PHP-Code zu verwenden, welcher zum Beispiel bei zahlreichen Shopware oder vereinzelten Magento Plugins zum Einsatz kommt.

Im Folgenden zeigen wir Ihnen die kompatiblen und nicht kompatiblen Anwendungen auf.

Kompatibilität von Anwendungen mit PHP 7.1

 
Software Kompatibilität Anmerkung
Contao kompatibel Unterstützt PHP 7.1.
Drupal teilweise kompatibel Ab Drupal 8.2.6 wird PHP 7.1 unterstützt.
Oxid nicht kompatibel
Magento teilweise kompatibel Bei Magento 1 nur mit Inchoo-Plugin umsetzbar. Magento 2.0 und 2.1 unterstützen PHP 7.1 nicht. Ab Magento Version 2.2 wird PHP 7.1 unterstützt.
Matomo (Piwik) kompatibel
Shopware teilweise kompatibel Viele der benötigten Plugins werden mit ionCube verschlüsselt und sind damit nicht mit PHP 7.1 kompatibel. Ohne den Einsatz von verschlüsselten Plugins ist Shopware ab Version 5.2 mit PHP 7.1 kompatibel.
Typo3 teilweise kompatibel Version 7 und 8 unterstützen beide die neueste PHP-Version.
WooCommerce teilweise kompatibel Ab WooCommerce 3.0 wird PHP 7.1 unterstützt.
WordPress kompatibel WordPress unterstützt PHP 7.1.
Xt:commerce nicht kompatibel Xt:commerce ist ab Version 5.1 mit PHP 7.1 kompatibel.

PHP 7.1 und Magento

Magento 1

PHP 7.1 ist derzeit für Magento 1 Shops nicht zu empfehlen. Wenn noch die PHP 5.x und Magento ab Version 1.9.2.2 im Einsatz sein sollte, ist es definitiv sinnvoll auf PHP 7.0 upzugraden, um den daraus resultierenden hohen Performancevorteil auszunutzen.

Es ist zwar im Grunde möglich, Magento 1 auf PHP 7.1 mithilfe des Plugins von Inchoo laufen zu lassen, jedoch gibt es dadurch fast keinen Vorteil.

Die neuen Features von PHP 7.1 können nicht von Magento 1 genutzt werden. Wenn ein ionCube-Loader für den Magento Shop benötigt wird, ist PHP 7.1 nicht kompatibel. Zudem sprechen die häufigen Deprecation-Warnungen in den Logdateien gegen ein Upgrade. So wird mcrypt als „deprecated“ markiert und erzeugt eine Warnung. Ab PHP 7.2 ist dies nicht mehr der Fall, da die Verschlüsselungsbibliothek Libmcrypt durch Libsodium ersetzt wurde. Alle Mcrypt-Funktionen stehen mit PHP 7.2 nicht mehr zur Verfügung.

Magento 2

Magento 2.0 und 2.1 unterstützen PHP 7.1 überhaupt nicht. Von CoreHacks, die Magento 2 auf PHP 7.1 laufen lassen, raten wir dringend ab.

Sinnvoll wird das Upgrade auf PHP 7.1 bei der neuen Magento 2.2 Version, die im September 2017 erschienen ist. Bei dieser Magento Version werden alle neuen Features vollständig unterstützt. Für alle Nutzer der Magento Version 2.2.x Version empfehlen wir ein Upgrade von 7.0 auf 7.1.

Kompatibilität zu Shopware

Aktuell sind ionCube verschlüsselte Plugins für Shopware nicht kompatibel mit PHP 7.1 (und 7.2). Das liegt daran, dass ionCube 9 zur Verschlüsselung eingesetzt wird, welches nur mit PHP 7.0.x lauffähig ist. Unter dem Einsatz unverschlüsselter Plugins unterstützt Shopware ab Version 5.2 im Kern PHP 7 und ist damit auch mit PHP 7.1 nutzbar. PHP 7.2 ist ab Version 5.3.5 mit Shopware – ohne die Nutzung von ionCube verschlüsselten Plugins – kompatibel.

Mehr Informationen zur Kompatibilität finden Sie FAQ von Shopware.

PHP 7.1 bei maxcluster einrichten

Auf allen unseren Clustern sind sowohl PHP 7.1 als auch die neue Version PHP 7.2 verfügbar. Mit einem einfachen Klick lässt sich das Upgrade für NGINX und Apache Webserver installieren (siehe Screenshot 1). Allerdings ist für die Integration ein Debian 8 Cluster notwendig. Falls Sie Unterstützung bei einem Upgrade wünschen, steht Ihnen unser Team gern zur Seite. Kontaktieren Sie uns bitte unter service@maxcluster.de oder telefonisch +0049 5251 / 41 41 30.

PHP 7.1 Installation bei maxcluster

Screenshot 1: Gewünschte PHP-Version im Managed Center aktivieren

Unsere Handlungsempfehlung

Wann macht ein Update von PHP 7.0 auf 7.1 Sinn?

Definitiv ist ein Update sinnvoll und zu empfehlen für alle Nutzer von Magento 2.2 und höher. Hier lohnt es sich, da alle neuen Features von PHP 7.1 ab dieser Magento Version genutzt werden können. Zudem ist es sinnvoll für WordPress und Contao User sowie für die Nutzer von Typo3 (ab Version 7) und WooCommerce (ab Version 3).

Für alle anderen Anwendungen können wir aktuell keine Empfehlung für ein Upgrade von 7.0 auf 7.1 aussprechen. Ein Grund dafür liegt in der Inkompatibilität von ionCube verschlüsselten Plugins. Hier bleibt es abzuwarten, bis entsprechende Lösungen gefunden werden. In unserem Blog halten wir Sie über Neuerungen auf dem neuesten Stand.

Dieser Beitrag wurde am 15. Mai 2018 aktualisiert.

Bild: rawpixel.com