Wie in den Jahren zuvor erscheint auch in diesem Jahr gegen Ende November eine neue PHP-Version. In diesem Jahr steht ein großer Versionssprung von PHP 7.4 auf PHP 8.0 an, der mit einigen größeren und nicht abwärtskompatiblen Änderungen verbunden ist. Die neue PHP Version 8.0 ist heute offiziell erschienen und kann ab sofort auf unseren Webservern genutzt werden.
Änderungen in PHP 8.0
In PHP 8.0 wurden zahlreiche nicht abwärtskompatible Änderungen vorgenommen, die zu Kompatibilitätsproblemen führen können. Diese Änderungen betreffen hauptsächlich Funktionen, die bereits in den Vorgängerversionen 7.x als veraltet gekennzeichnet waren.
In PHP 8.0 wurde die XMLRPC-Extension entfernt, die in den älteren PHP-Versionen auf unseren Webservern noch verfügbar ist. Diese Extension ist für PHP 8.0 nur noch als optionales Zusatzmodul bei PECL verfügbar.
Eine wichtige Änderung ist, dass der @
-Operator nun keine kritischen Fehlermeldungen mehr unterdrückt. Dies kann zu Problemen führen, wenn in den Fehlermeldungen vertrauliche Informationen (z.B. Datenbankzugangsdaten) einsehbar sind. Wir haben daher bei PHP 8.0 aus Sicherheitsgründen die PHP-Option display_errors=Off
standardmäßig gesetzt, Sie können diese bei Bedarf per php.ini bzw. .user.ini-Konfigurationsdatei wieder deaktivieren.
Eine weitere Änderung, die häufig zu Problemen führt ist, dass der Zugriff auf Array-Elemente nun nicht mehr mittels geschweifter Klammern {}
möglich ist, sondern nur noch eckige Klammern []
erlaubt sind.
Eine Übersicht über alle nicht abwärtskompatiblen Änderungen finden sie hier.
Neuerungen und Verbesserungen in PHP 8.0
Die vielleicht wichtigste technische Neuerung ist die Integration eines sogenannten Just-In-Time (JIT) Compilers. PHP ist eine interpretierte Skriptsprache, ein PHP-Skript muss vor der Ausführung vom menschenlesbaren Quellcode in ausführbaren Maschinencode für Computer umgewandelt werden. Diese Umwandlung erfolgt bei PHP aber nicht direkt, sondern über einen Zwischenschritt: PHP erzeugt keinen nativen Maschinencode für bestimmte Prozessoren, sondern erzeugt aus dem Quellcode in einem Zwischenschritt sogenannten Bytecode für eine virtuelle Maschine (die Zend Engine), die daraus dann ausführbaren Maschinencode für Prozessoren erzeugt. Dieser Bytecode kann zur Beschleunigung zwischengespeichert werden (OpCache), der Maschinencode muss aber immer neu erzeugt werden. Der neue JIT-Compiler kann nun auch Maschinencode erzeugen und zwischenspeichern, dadurch kann bei sehr CPU-lastigen Skripten eine deutliche Performance-Steigerung erzielt werden. Die meisten Web-Anwendungen sind allerdings nicht besonders CPU-lastig, so ergibt sich z.B. für eine WordPress-Installation eine kaum messbare Verkürzung der Seitenladezeit. Der JIT-Compiler kann nicht mit OpCache im reinen Dateimodus genutzt werden, auf unseren Webservern funktioniert er daher nur in Webhosting-Paketen mit PHP-FPM (Pro- oder Dedicated-Server). Allerdings muss PHP-FPM dann bei jeder Änderung an einer PHP-Datei neu gestartet werden, was bei Web-Anwendungen mit automatischen Updates problematisch ist. Wir werden den JIT-Compiler daher zunächst nicht einsetzen.
Eine für Softwareentwickler interessante Neuerung ist die Unterstützung von sogenannten Union Types. Union Types akzeptieren Werte von mehreren unterschiedlichen Typen (z.B. int und float) , die Verwendung lässt sich mit folgendem Beispiel veranschaulichen:
class Number {
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}
Eine Übersicht über alle Neuerungen in PHP 8.0 finden Sie hier.
Performance-Verbesserungen in PHP 8.0
Wir konnten in ersten Tests eine leichte Verbesserung der PHP-Ausführungsgeschwindigkeit von etwa 5% bis 10% im Vergleich zur Vorgängerversion 7.4 feststellen.
PHP 8.0 aktivieren
Sie können PHP 8.0 wie üblich entweder im Kundenmenü oder per .htaccess-Konfigurationsdatei auf dem Webserver mittels folgender Direktive aktivieren:
AddHandler application/x-httpd-php80 .php
Für weitere Hinweise zur Auswahl der PHP-Version beachten Sie bitte den FAQ-Artikel „Wie kann ich eine bestimmte PHP-Version auswählen?„.
Beachten Sie bitte, dass viele Web-Anwendungen noch nicht mit PHP 8.0 kompatibel sind. Dies betrifft auch das am häufigsten genutzte CMS WordPress in der gegenwärtig aktuellen Version 5.5.3. Die Unterstützung von PHP 8.0 ist für die kommende WordPress-Version 5.6 angekündigt, die voraussichtlich am 8.12. erscheinen wird. Das ebenfalls beliebte CMS Joomla ist ab der der gegenwärtig aktuellen Version 3.9.23 mit PHP 8.0 kompatibel.
PHP 7.2 End of Life
Mit dem Erscheinen von PHP 8.0 endet auch die Unterstützung der älteren PHP-Version 7.2 durch das PHP-Entwicklerteam, es wird keine weiteren offiziellen Updates für diese PHP-Version mehr geben.
Falls Sie noch PHP 7.2 für Ihre Webseiten nutzen, sollten Sie aus Sicherheitsgründen möglichst bald auf eine neuere PHP-Version umstellen. Wir empfehlen, momentan noch nicht die neue PHP Version 8.0 zu nutzen, da hier noch zahlreiche Kompatibilitätsprobleme auftreten können. Verwenden Sie zunächst besser noch die Vorgängerversionen PHP 7.4 oder 7.3.