Viele Nutzer von Webapps wie WordPress oder Joomla schielen auf die Grafiken, die die Ergebnisse von Geschwindigkeitstests unter PHP 5 und PHP 7 vergleichen. In der Regel entscheidet PHP 7 solche Tests für sich, und zwar mit gehörigem Abstand.
PHP 7 ist nun seit gut einem Jahr als stabile Version verfügbar. Noch immer zögern viele, den Sprung von PHP 5 auf 7 zu wagen. Im August 2016 liefen nach seriösen Angaben gerade mal zwei bis drei Prozent aller WordPress-Sites unter PHP 7. Warum durchdringt die neue Version die produktiv eingesetzten Open-Source-Anwendungen so langsam?
Die Gründe für die Zurückhaltung sind naheliegend. Viele existierende Anwendungen und Webseiten würden einfach nicht mehr funktionieren, wenn man kalt auf PHP 7 umschaltet. Grund dafür sind Funktionen, die in einer neuen Version nicht mehr unterstützt werden. Diese werden bei PHP dann als „deprecated“ bezeichnet. Manche andere Elemente wie bestimmte Erweiterungen („extensions“) fallen weg. Das ist auch im Übergang von PHP 5.6 auf 7 der Fall.
Die PHP-Organisation veröffentlicht jeweils einige Dokumente, die die veränderten Elemente beim Übergang auf eine neue Version beschreiben.
So fällt auf, dass zwei besonders in älterer Software verwendete Sprachkonstrukte nicht mehr zum Einsatz kommen können: ‚ereg‘ und ‚mysql‘. Bei ersterem handelt es sich um eine Suchen-/Ersetzen-Funktion, für die nun ‚preg_replace‘ verwendet werden sollte. Die andere, ‚mysql‘, war dafür zuständig, eine Verbindung zu einer MySQL-Datenbank aufzubauen. Webanwendungen, die eine Datenbank voraussetzen (und welche tut das nicht?) und deren Code die ‚mysql‘-Funktion verwenden, werden unter PHP 7 nicht mehr funktionieren. Man sollte nun statt dessen mit PDO oder MySQLi arbeiten.
Auch wenn die Herausgeber von WordPress oder Joomla angeben, dass die neusten Versionen ihrer Software PHP 7-fähig seien, einige verwendete Plugins oder Erweiterungen sind es aber eventuell nicht. Dennoch muss man sich auf einen Umstieg vorbereiten – und ihn ausführen, wenn es möglich ist.
Um WordPress daraufhin zu überprüfen, ob alle verwendeten Komponenten unter PHP 7 arbeiten, kann man ein Plugin verwenden: Der PHP-Compatibility-Checker (im Pluginverzeichnis) untersucht die ganze WordPress-Installation daraufhin, ob der Umstieg auf PHP 7 ein Problem werden könnte. Fehler und Warnungen werden aufgelistet. Das Tool liefert allerdings auch einige Falsch-Positiv-Meldungen und findet eventuell nicht alle Probleme, dennoch präsentiert es starke Indizien für oder gegen eine Kompatibilität. Zudem nutzt das Plugin für die Analyse eine „Whitelist“ mit erwiesenermaßen kompatiblen Themes und Plugins.
Ob die Site nach einer Umstellung auf PHP 7 tatsächlich schneller läuft, wie oft kolportiert wird, hängt von vielen Faktoren ab. Die Art der Einbindung von PHP in den Webserver ist sicher entscheidend, also ob das Modul direkt eingebunden ist oder über CGI angesprochen wird. Allerdings ist es ebenso entscheidend wie die Website insgesamt angelegt ist, ob viele große Grafikdateien geladen werden müssen, ein Framework wie Bootstrap integriert werden muss und wie viele Datenbankabfragen überhaupt notwendig sind, um eine Seite zu generieren. Wenn der Server viel Programmcode am Stück abarbeiten soll, kann PHP 7 im Vorteil sein, besonders wenn es als Webservermodul integriert ist.
PHP 7 stellt die aktuelle Version dar. Der neuste Zweig der Vorversion, PHP 5.6, soll ab Januar 2017 statt mit regelmäßigen Bugfixes nur noch bei Bedarf mit Updates versorgt werden, um kritische Probleme zu beheben. Für PHP 5.5 ist auch diese Unterstützung inzwischen eingestellt worden. Das sieht die Roadmap von PHP momentan so vor. Mit PHP 7 wird man nach heutigem Stand noch ein Jahr weiterarbeiten können ehe der aktive Support mit regelmäßigen Updates ausläuft.
Damit hat man nun die eigentlich ungute Situation, zwei nicht ganz kompatible PHP-Hauptversionen verfügbar zu haben. Dem tragen wir bei goneo dadurch Rechnung, dass man als Anwender webserverweise auswählen kann, welche PHP-Version man einsetzen möchte. Aktuell ist – aufgrund der Gegebenheiten mit der Software der wichtigsten Webanwendungen – 5.6 die Voreinstellung.
Grundsätzlich ist es natürlich empfehlenswert, die aktuellste Variante zu verwenden, doch im Einzelfall sprechen eventuell einige durchaus nachvollziehbare Gründe dagegen. Oft ist einfach keine neue Version eines wichtigen Plugins verfügbar oder das alte Theme, das vielleicht auch noch teuer eingekauft und speziell angepasst wurde, versagt den Dienst unter PHP 7.
Dann bleibt nur die Möglichkeit, die Migration in kleinen Schritten vorzunehmen, um nach und nach alle alten Komponenten zu ersetzen oder nötigenfalls auf diese zu verzichten, wenn sich keine Alternative findet. Es wird der Tag kommen, an dem kritische Lücken in alten PHP-Versionen ausgenutzt werden, so dass es nicht mehr verantwortbar ist, diese alte PHP-Version einzusetzen.
Hallo Markus,
ich setze teilweise PHP 5.5, 5.6 und 7.0.11 ein. Beim Shared Webhosting und dem Managed Server noch fast überall arbeite ich mit PHP 5.6, weil es sich anbietet und ich oft mehrere Forum/Blogs/CMS-Installationen auf einer Domain habe. Im Falle meines Rootservers war ja beim Centos 7 von Haus aus sogar PHP 5.4 aktiv, was ich auch in Plesk vorgefunden habe. Da habe ich schon PHP 5.6 installiert, was nach einer englischen Anleitung gut klappte. Aber leider kann ich noch nicht mit PHP 7.0.11 beim Rootserver agieren, weil eine Software namens Phabricator, was ein Projektverwaltungstool für Softwareentwickler ist, mit PHP 7.0 noch nicht kompatibel gemacht worden ist. Vermutlich ist es nur eine reine Zeitfrage, bis es dazu kommt. Da hoffe ich wirklich darauf, dass ich dann mein Centos 7 auf PHP 7.0 upgraden kann.
Beim installierten Joomla 3.6.3 setze ich schon PHP 7 ein und mir kam das Backend gefühlt etwas schneller vor als wäre es noch PHP 5.6. Vielleicht aber bilde ich mir das nur ein 🙂 Nee, denke schon, dass es schneller läuft.
Wordpress, Joomla, Xoops und viele andere CMS laufen bereits unter PHP 7, aber wohl nicht alle Extensions, Addons und Plugins bzw. auch Templates und Themes. Da muss ich halt noch schauen, wie es ist und genau abwägen, ob ich solche Plugin installieren will.
Eines Tages ist auch mein ManagedServer, was jetzt auf PHP 5.5 voreingestellt ist, bei PHP 7. Das kann ich jetzt so auswählen und gerne mache ich es mit SSL zusammen. Das ist schon etwas anderes. Schauen wir einmal wie lange wir noch bei der alten PHP-Version bleiben können. Upgraden geht jederzeit und muss nur gut überdacht werden. Im Übrigen gibt es in Google bereits Anleitungen wie du PHP 7.1 RC 3, glaube ich zu wissen, installieren kann. Das meine ich bei Linux-Servern.