PHP 8.4 ist verfügbar

Heute wurde die neue PHP-Version 8.4 veröffentlicht. Wir haben diese PHP-Version bereits auf allen Webservern installiert, so dass Sie sie ab jetzt für Ihre Web-Anwendungen verwenden können.

Neuerungen und Verbesserungen

Für viele Anwender:innen zählt vor allem eines: schnellere Ladezeiten durch eine verbesserte Ausführungsgeschwindigkeit. In ersten Tests konnten wir jedoch keine signifikanten Performance-Unterschiede zwischen PHP 8.4 und der Vorgängerversion 8.3 feststellen. Dennoch sind in spezifischen Szenarien spürbare Verbesserungen durchaus möglich.

Eine nützliche Neuerung in PHP 8.4 sind Propery Hooks, dadurch lässt sich redundanter Boilerplate-Code für Get()- und Set()-Methoden reduzieren. Bei folgender Beispielklasse ohne Property Hooks müssen Get()- und Set()-Methoden definiert werden:

class User 
{
    private $name;
 
    public function __construct(string $name) {
        $this->name = $name;
    }
 
    public function getName(): string {
        return $this->name;
    }
 
    public function setName(string $name): void {
         if (strlen($value) === 0) {
                throw new ValueError("Name must be non-empty");
        }
        $this->name = $name;
    }
}

Mit Property Hooks lässt die Klasse wie folgt vereinfachen:

class User 
{
    public string $name {
        set {
            if (strlen($value) === 0) {
                throw new ValueError("Name must be non-empty");
            }
            $this->name = $value;
        }
    }
 
    public function __construct(private string $name) {
        $this->name = $name;
    }
}

Für Arrays gibt es nun 4 zusätzliche Callback-Funktionen array_find(), array_find_key(), array_any() und array_all(). Zur Nutzung dieser Funktionen beachten Sie die folgenden Beispiele:

$array = [
    'a' => 'dog',
    'b' => 'cat',
    'c' => 'cow',
    'd' => 'duck',
    'e' => 'goose',
    'f' => 'elephant'
];
 
// Find the first animal with a name longer than 4 characters.
var_dump(array_find($array, function (string $value) {
    return strlen($value) > 4;
})); // string(5) "goose"

// Find the first animal with a name longer than 4 characters.
var_dump(array_find_key($array, function (string $value) {
    return strlen($value) > 4;
})); // string(1) "e"

// Check, if any animal name is longer than 5 letters.
var_dump(array_any($array, function (string $value) {
    return strlen($value) > 5;
})); // bool(true)

// Check, if all animal names are shorter than 12 letters.
var_dump(array_all($array, function (string $value) {
    return strlen($value) < 12;
})); // bool(true)

Eine weitere Neuerung ist die Unterstützung von HTML5 in der DOM Extension, außerdem wurden in der XML Extension Probleme bei der Verarbeitung großer XML-Dateien behoben.

Entfernung veralteter Extensions

Die veralteten PHP-Extensions IMAP und Pspell wurden in PHP 8.4 entfernt, da die Extensions selbst sowie die zugrundeliegenden Softwarebibliotheken veraltet sind und seit Jahren nicht mehr aktualisiert wurden. Als Alternative zu Pspell kann die Extension Enchant genutzt werden.

Da es in PHP 8.4 kaum schwerwiegende nicht abwärtskompatible Änderungen zur Vorgängerversion 8.3 gibt, sind viele Web-Anwendungen bereits mit PHP 8.4 kompatibel.

Auf der PHP-Webseite finden sie eine vollständige Übersicht über alle nicht abwärtskompatiblen Änderungen und Neuerungen.

PHP 8.4 aktivieren

Sie können PHP 8.4 wie gewohnt über das Kundenmenü oder auf den Webservern per .htaccess-Konfigurationsdatei mittels folgender Direktive auswählen:

AddHandler application/x-httpd-php84 .php

Verlängerung der Sicherheitsunsterstützung

Die PHP-Entwickler haben die Phase der Sicherheitsunsterstützung für ältere PHP-Versionen um ein Jahr auf nun insgesamt zwei Jahre verlängert. Damit wird die PHP-Version 8.1 noch bis zum 31.12.2025 mit Sicherheitsupdates versorgt.
Die PHP-Version 8.2 wechselt ab dem 1.1.2025 in die Phase der Sicherheitsunsterstützung. Ab dann wird es für diese PHP-Version nur noch Updates bei sicherheitskritischen Fehlern geben, andere nicht sicherheitskritische Fehler werden nicht mehr behoben.
Eine Übersicht der Unterstützungsphasen aller PHP-Versionen finden Sie auf der PHP-Webseite.

PHP 8.4 RC1 zum Testen verfügbar

Auf unseren Webservern steht ab heute der erste Release Candidate der kommenden PHP Version 8.4 zum Testen zur Verfügung. Die Release Candidate-Versionen von PHP dienen den PHP-Entwicklern zum Aufspüren von letzten Fehlern und Problemen, bevor die finale Version von PHP 8.4 voraussichtlich gegen Ende November erscheinen wird.

Mit dem Release Candidate können Sie testen, ob die von Ihnen genutzten PHP-Anwendungen bereits mit PHP 8.4 kompatibel sind, für den Produktivbetrieb sollten die Release Candidates jedoch aufgrund eventuell sicherheitsrelevanter Fehler nicht genutzt werden. Bis zur geplanten Veröffentlichung von PHP 8.4 werden planmäßig noch 3 weitere Release Candidate-Versionen erscheinen, die wir dann zeitnah auf den Webservern installieren werden.

Neuerungen in PHP 8.4

Die für viele Endanwender wichtigste Verbesserung bei neuen PHP-Versionen ist eine höhere Ausführungsgeschwindigkeit, wir konnten in ersten Tests jedoch keine signifikanten Performance-Unterschiede zwischen PHP 8.4 und der Vorgängerversion 8.3 feststellen.

Eine nützliche Neuerung in PHP 8.4 sind Propery Hooks, dadurch lässt sich redundanter Boilerplate-Code für Get()- und Set()-Methoden reduzieren. Bei folgender Beispielklasse ohne Property Hooks müssen Get()- und Set()-Methoden definiert werden:

class User 
{
    private $name;
 
    public function __construct(string $name) {
        $this->name = $name;
    }
 
    public function getName(): string {
        return $this->name;
    }
 
    public function setName(string $name): void {
         if (strlen($value) === 0) {
                throw new ValueError("Name must be non-empty");
        }
        $this->name = $name;
    }
}

Mit Property Hooks lässt die Klasse wie folgt vereinfachen:

class User 
{
    public string $name {
        set {
            if (strlen($value) === 0) {
                throw new ValueError("Name must be non-empty");
            }
            $this->name = $value;
        }
    }
 
    public function __construct(private string $name) {
        $this->name = $name;
    }
}

Für Arrays gibt es nun 4 zusätzliche Callback-Funktionen array_find(), array_find_key(), array_any() und array_all(). Beachten Sie dazu folgende Beispiele:

$array = [
    'a' => 'dog',
    'b' => 'cat',
    'c' => 'cow',
    'd' => 'duck',
    'e' => 'goose',
    'f' => 'elephant'
];
 
// Find the first animal with a name longer than 4 characters.
var_dump(array_find($array, function (string $value) {
    return strlen($value) > 4;
})); // string(5) "goose"

// Find the first animal with a name longer than 4 characters.
var_dump(array_find_key($array, function (string $value) {
    return strlen($value) > 4;
})); // string(1) "e"

// Check, if any animal name is longer than 5 letters.
var_dump(array_any($array, function (string $value) {
    return strlen($value) > 5;
})); // bool(true)

// Check, if all animal names are shorter than 12 letters.
var_dump(array_all($array, function (string $value) {
    return strlen($value) < 12;
})); // bool(true)

Eine weitere Neuerung ist die Unterstützung von HTML5 in der DOM Extension, außerdem wurden in der XML Extension Probleme bei der Verarbeitung großer XML-Dateien behoben.

Entfernung veralteter Extensions

Die veralteten PHP-Extensions IMAP und Pspell wurden in PHP 8.4 entfernt, da die Extensions selbst sowie die zugrundeliegenden Softwarebibliotheken veraltet sind und seit Jahren nicht mehr aktualisiert wurden. Als Alternative zu Pspell kann die Extension Enchant genutzt werden.

Da es in PHP 8.4 kaum schwerwiegende nicht abwärtskompatible Änderungen zur Vorgängerversion 8.3 gibt, sollten viele Web-Anwendungen bereits mit PHP 8.4 kompatibel sein.

Eine Übersicht über alle Änderungen und Neuerungen in PHP 8.4 finden sie hier.

PHP 8.4 aktivieren

Sie können PHP 8.4 wie gewohnt über das Kundenmenü oder auf den Webservern per .htaccess-Konfigurationsdatei mittels folgender Direktive auswählen:

AddHandler application/x-httpd-php84 .php

PHP 8.3 ist verfügbar

PHP 8.3 Logo

Das PHP-Entwicklerteam stellt jedes Jahr gegen Ende November eine neue Version der von vielen bekannten Web-Anwendungen genutzten Skriptsprache PHP bereit. Heute ist die PHP-Version 8.3 erschienen, die Sie ab sofort auf unseren Webservern nutzen können.

Neuerungen in PHP 8.3

Die meisten Neuerungen in PHP 8.3 betreffen Softwareentwickler, die neue Funktionen und Attribute verwenden können.

Für JSON-Zeichenketten gibt es eine neue Funktion json_validate(), mit der diese auf syntaktische Gültigkeit geprüft werden kann. Bisher musste dazu die Funktion json_decode() genutzt werden, die jedoch deutlich langsamer ist und wesentlich mehr Speicher benötigt, was bei sehr langen JSON-Zeichenketten zu Problemen führen kann.

Eine weitere Neuerung ist das Attribut #[Override], mit dem eine Methode anzeigen kann, dass sie eine Methode einer übergeordneten Klasse überschreibt. Falls sich der Name oder die Signatur der Methode in der übergeordneten Klasse z.B. nach einem Update ändert, würde dies häufig unbemerkt bleiben und könnte zu unerwarteten Problemen führen. Durch das Override-Attribut würde es in diesem Fall eine eindeutige Fehlermeldung geben und die Anwendungsentwickler können das Problem sofort erkennen und beheben.

Beispiel

abstract class ParentClass {
    public function MethodImplementation(): int {
        return 1;
    }
}

final class ChildClass extends ParentClass {
    #[Override]
    public function MethodImplementation(): int {
        return 2;
    }
}

Angenommen, der Name der Methode MethodImplementation() ändert sich wie folgt:

abstract class ParentClass {
    public function NewMethodImplementation(): int {
        return 1;
    }
}

Dann gäbe es in der abgeleiteten Klasse eine Fehlermeldung und der Name der Methode müsste angepasst werden.

Ebenfalls neu ist die Möglichkeit Typen für Klassenkonstanten festzulegen. Dies verbessert die Typsicherheit bei abgeleiteten Klassen oder Interface-Implentierungen.

Beispiel

class ConstantTest {
    const string TEST_CONSTANT = 'test';
}

Die in PHP-Version 8.2 modernisierte Random-Extension wurde außerdem um einige neue Funktionen erweitert. Besonders interessant ist die Funktion getBytesFromString(), die eine Zeichenkette mit vorgegebener Länge aus vorgegebenen Zeichen erzeugt, damit lassen sich z.B. sehr einfach Passwörter generieren.

Eine Übersicht über alle Neuerungen und Änderungen sowie Hinweise zur Migration von älteren PHP-Versionen finden sie hier.

Da es in PHP 8.3 kaum schwerwiegende nicht abwärtskompatible Änderungen zur Vorgängerversion 8.2 gibt, sollten viele Web-Anwendungen bereits mit PHP 8.3 kompatibel sein.

PHP 8.3 aktivieren

Sie können PHP 8.3 wie gewohnt über das Kundenmenü für eine bestimmte Domain oder das gesamte Paket aktivieren.

Möchten Sie PHP 8.3 nur für ein bestimmtes Unterverzeichnis nutzen, können Sie folgende .htaccess-Direktive verwenden:

AddHandler application/x-httpd-php83 .php

PHP 8.0 End of Life

Etwa zeitgleich mit der Veröffentlichung von PHP 8.3 stellen die PHP-Entwickler die Unterstützung der PHP-Version 8.0 vollständig ein. Für die PHP Version 8.1 wird es ab Dezember nur noch Updates bei sicherheitskritischen Fehlern geben, nur die PHP-Versionen 8.2 und 8.3 werden dann noch vollständig unterstützt.

Falls Sie noch eine ältere PHP-Version als 8.1 für Ihre Web-Anwendungen nutzen, sollten Sie diese möglichst bald auf PHP 8.1 oder neuer umstellen.

Wir werden für ältere nicht mehr unterstützte PHP-Versionen weiterhin regelmäßig zurückportiere Sicherheitsupdates bereitstellen, es gibt aber keine Garantie, dass alle eventuell bestehenden Sicherheitslücken zeitnah geschlossen werden.

PHP 8.3 RC1 zum Testen verfügbar

Auf unseren Webservern steht ab heute der erste Release Candidate der kommenden PHP Version 8.3 zum Testen zur Verfügung. Die Release Candidate-Versionen von PHP dienen den PHP-Entwicklern zum Aufspüren von letzten Fehlern und Problemen, bevor die finale Version von PHP 8.3 voraussichtlich gegen Ende November erscheinen wird.

Mit dem Release Candidate können Sie testen, ob die von Ihnen genutzten PHP-Anwendungen bereits mit PHP 8.3 kompatibel sind, für den Produktivbetrieb sollten die Release Candidates jedoch aufgrund eventuell sicherheitsrelevanter Fehler nicht genutzt werden. Bis zur geplanten Veröffentlichung von PHP 8.3 werden noch 5 weitere Release Candidate-Versionen erscheinen, die wir dann zeitnah auf den Webservern installieren werden.

Neuerungen in PHP 8.3

Die für viele Endanwender wichtigste Verbesserung bei neuen PHP-Versionen ist eine höhere Ausführungsgeschwindigkeit, wir konnten in ersten Tests jedoch keine signifikanten Performance-Unterschiede zwischen PHP 8.3 und der Vorgängerversion 8.2 feststellen.

Für JSON-Zeichenketten gibt es nun eine Funktion json_validate(), mit der diese auf syntaktische Gültigkeit geprüft werden kann. Bisher musste dazu die Funktion json_decode() genutzt werden, die jedoch deutlich langsamer ist und wesentlich mehr Speicher benötigt, was bei sehr langen JSON-Zeichenketten zu Problemen führen kann.

Eine weitere Neuerung ist das Attribut #[Override], mit dem eine Methode anzeigen kann, dass sie eine Methode einer übergeordneten Klasse überschreibt. Falls sich der Name oder die Signatur der Methode in der übergeordneten Klasse ändert, würde dies normalerweise unbemerkt bleiben, und könnte zu unerwarteten Problemen führen. Durch das Override-Attribut würde es in diesem Fall eine eindeutige Fehlermeldung geben, und die Anwendungsentwickler können das Problem sofort erkennen und beheben.

Die in PHP-Version 8.2 modernisierte Random-Extension wurde außerdem um einige neue Funktionen erweitert. Besonders interessant ist die Funktion getBytesFromString(), die eine Zeichenkette mit vorgegebener Länge aus vorgegebeben Zeichen erzeugt, damit lassen sich z.B. sehr einfach Passwörter generieren.

Da es in PHP 8.3 kaum schwerwiegende nicht abwärtskompatible Änderungen zur Vorgängerversion 8.2 gibt, sollten viele Web-Anwendungen bereits mit PHP 8.3 kompatibel sein.

PHP 8.3 aktivieren

Sie können PHP 8.3 wie gewohnt über das Kundenmenü oder auf den Webservern per .htaccess-Konfigurationsdatei mittels folgender Direktive auswählen:

AddHandler application/x-httpd-php83 .php

PHP 8.0 End of Life

Mit der gegen Ende November geplanten Veröffentlichung der finalen Version von PHP 8.3 stellen die PHP-Entwickler die Unterstützung der PHP-Version 8.0 vollständig ein, für die PHP Version 8.1 wird es ab dann nur noch Updates bei sicherheitskritischen Fehlern geben. Falls Sie noch eine ältere PHP-Version als 8.1 für Ihre Web-Anwendungen nutzen, sollten Sie diese möglichst bald auf PHP 8.1 oder neuer umstellen.

PHP 8.2 ist verfügbar

Das Entwicklerteam der für Web-Anwendungen häufig genutzten Programmiersprache PHP stellt traditionell gegen Ende des Jahres eine neue Version der Programmiersprache bereit. Heute ist die neue Version 8.2 veröffentlicht worden, die wir gerade auf allen Webservern installiert haben.

Da es sich um ein sogenanntes Minor-Release handelt, halten sich die nicht abwärtskompatiblen Änderungen zur Vorgängerversion in Grenzen, viele bekannte PHP-Anwendungen wie WordPress sind daher bereits mit der neuen PHP-Version nutzbar.

Neuerungen und Änderungen in PHP 8.2

Die für die meisten Nutzer:innen wichtigste Verbesserung bei neuen PHP-Versionen ist eine höhere Ausführungsgeschwindigkeit, wodurch sich die Seitenladezeit von Web-Anwendungen wie WordPress reduziert. Wir konnten in ersten Tests Verbesserungen von bis zu 5% feststellen.

Eine für viele PHP-Entwickler nützliche neue Funktion ist mysqli_execute_query(), die mysqli_prepare(), mysqli_execute() und mysqli_stmt_get_result() in einem einzigen Aufruf verbindet. Diese Funktion kann ähnlich einfach wie mysqli_query() genutzt werden, ist aber nicht für sogenannte SQL Injection Angriffe anfällig. Parameterwerte werden wie bei Prepared Statements mit den Platzhalter ? übergeben, z.B.:

foreach ($db->execute_query('SELECT * FROM user WHERE name LIKE ? AND type_id IN (?, ?)', [$name, $type1, $type2]) as $row) {
    print_r($row);
}

Eine weitere sinnvolle Verbesserung betrifft den Schutz von vertraulichen Daten. Bei unerwarteten Fehlern während der Ausführung eines PHP-Scripts werden häufig sogenannte Stack Traces ausgegeben, um die Fehleranalyse zu erleichtern. Dabei können unter Umständen jedoch auch vertrauliche Parameter wie Datenbankpasswörter ausgegeben werden, z.B:

PDOException: SQLSTATE[HY000] [2002] No such file or directory in /homepages/u123456/test.php:3
Stack trace:
#0 /homepages/u123456/test.php(3): PDO->__construct('mysql:host=db1', 'u123456', 'Geheimes Passwort')
#1 {main}

Um dies zu verhindern, können solche vertraulichen Parameter nun durch das Attribut \SensitiveParameter geschützt werden, z .B.:

<?php
 
function test(
    $foo,
    #[\SensitiveParameter] $bar,
) {
    throw new \Exception('Error');
}
 
test('foo', 'bar');
 
/*
Fatal error: Uncaught Exception: Error in test.php:8
Stack trace:
#0 test.php(11): test('foo', Object(SensitiveParameterValue))
#1 {main}
  thrown in test.php on line 8
*/

Eine für die Zukunft wichtige Änderung ist die Abkündigung der Unterstützung von sogenannten dynamischen Properties. Bisher konnten in PHP beliebige Properties zu Objekten hinzugefügt werden, auch wenn diese gar nicht in der Klasse definiert waren, z.B.:

class User{
  public string $name;
}

$user = new User();
$user->email = 'dynamic@property.com';

Diese dynamischen Properties gelten nun als veraltet und werden in einem späteren PHP Major Release gestrichen.

Eine Übersicht über alle Änderungen und Neuerungen in PHP 8.2 sowie Hinweise zum Wechsel von älteren PHP-Versionen finden Sie hier.

PHP 8.2 aktivieren

Sie können PHP 8.2 wie gewohnt über das Kundenmenü oder auf den Webservern per .htaccess-Konfigurationsdatei mittels folgender Direktiven auswählen:

AddHandler application/x-httpd-php82 .php

PHP 7.4 End of Life

Mit der Veröffentlichung von PHP 8.2 stellen die PHP-Entwickler die Unterstützung der PHP-Version 7.4 vollständig ein, für die PHP Version 8.0 wird es ab dann nur noch Updates bei sicherheitskritischen Fehlern geben.

Sie können PHP 7.4 weiterhin auf unseren Webservern nutzen, wir werden für PHP 7.4 und für alle anderen veralteten PHP-Versionen regelmäßig zurückportierte Sicherheitsupdates von neueren PHP-Versionen bereitstellen. Diese Updates werden jedoch nur bei schwerwiegenden Sicherheitsproblemen bereitgestellt, kleinere Fehler werden nicht mehr behoben.

Falls Sie noch eine ältere PHP-Version als 8.0 für Ihre Web-Anwendungen nutzen, sollten Sie diese möglichst bald auf PHP 8.0 oder neuer umstellen.

PHP 8.1 verfügbar

Das Entwicklerteam der von Web-Anwendungen am häufigsten genutzten Programmiersprache PHP stellt jedes Jahr gegen Ende November eine neue Version der Programmiersprache bereit.

Heute (25.11.2021) wurde die PHP-Version 8.1 veröffentlicht. Wir haben diese neue PHP-Version bereits auf allen Webservern installiert, so dass Sie sie ab sofort nutzen können.

Änderungen in PHP 8.1

Da es sich bei PHP 8.1 um ein Minor-Release handelt, fallen die nicht zu den Vorgängerversionen abwärtskompatiblen Änderungen eher geringfügig aus. Dennoch kann es bei einigen Web-Anwendungen zu Fehlern bei der Nutzung von PHP 8.1 kommen, die jedoch in den kommenden Wochen und Monaten durch Updates dieser Anwendungen behoben werden sollten.

Eine Änderung, die zu Problemen führen kann, ist die Änderung der Standardeinstellung für die MySQLi-Fehlerbehandlung. Bisher war die Standardeinstellung MYSQLI_REPORT_OFF, damit wurden eventuelle Fehler nicht abgefangen, und die Programmausführung im Fehlerfall einfach fortgesetzt. In PHP 8.1 ändert sich die Standardeinstellung auf MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT, damit wird im Fehlerfall eine Exception generiert. Falls diese Exception nicht behandelt wird, können Programme jetzt Fehler anzeigen.

Eine Übersicht über alle Änderungen und Neuerung in PHP 8.1 finden Sie hier.

Neuerungen in PHP 8.1

In PHP 8.1 wurde ein neuer Datentyp für sogenannte Enumerations (enum) hinzugefügt. Eine Enumeration kann eine feste Anzahl an beliebig vorgegebenen Werten annehmen. Eine Enumeration könnte beispielsweise genutzt werden, um die verschiedenen Farben eins Kartenspiels abzubilden:

enum Suit {
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}

Eine wichtige Neuerung sind die sogenannten Fibers, damit können in PHP mehrere Aufgaben nebenläufig ausgeführt werden. Es handelt sich jedoch nicht um echte Parallelität; wird ein Fiber gestartet, so wird das Hauptprogramm angehalten, bis der Fiber unterbrochen oder beendet wird . Dieses Feature richtet sich hauptsächlich an Entwickler von PHP-Frameworks, die damit beispielsweise Event Loops implementieren können.

Eine weitere Neuerung ist der sogenannte Inheritance Cache für OpCache. Bisher wurden Vererbungsbeziehungen zwischen Klassen in OpCache nicht vollständig aufgelöst zwischengespeichert, so dass dies immer zur Laufzeit geschehen musste (Linking). Dieser Vorgang ist relativ aufwändig und verlangsamt den Programmstart. In PHP 8.1 werden Klassen jetzt vollständig gelinkt im OpCache zwischengespeichert, dies führt zu einer Performance-Verbesserung von bis zu 8%.

Verbesserungen in PHP 8.1

Wir konnten in ersten Tests eine Verbesserung der Ausführungsgeschwindigkeit von bis zu 10% im Vergleich zur Vorgängerversion PHP 8.0 feststellen. Durch die Umstellung auf PHP 8.1 kann sich die Seitenladezeit von Web-Anwendungen wie WordPress also etwas verbessern.

PHP 8.1 aktivieren

Sie können PHP 8.1 wie gewohnt entweder über unser Kundenmenü aktivieren, oder per .htaccess-Konfgurationsdatei im gewünschten Anwendungsverzeichnis mittels folgender Direktiven:

AddHandler application/x-httpd-php81 .php

Einschränkungen auf Legacy-Webservern

Beachten Sie bitte, dass Sie PHP 8.1 auf unseren Legacy-Webservern mit Unterstützung für PHP-Versionen älter als PHP 5.6 nicht im vollen Funktionsumfang nutzen können.

Da in PHP 8.1 die Unterstützung für ältere Versionen der Verschlüsselungsbibliothek OpenSSL entfernt wurde, kann dort die OpenSSL-Extension nicht genutzt werden, und es fehlt die Wrapper-Unterstützung für HTTPS und andere verschlüsselte Protokolle.

Von dieser Einschränkung sind nur Kunden und Reseller betroffen, die Hosting-Pakete auf einem Legacy-Webserver gebucht haben, da sie eine ältere PHP-Version als PHP 5.6 benötigen.

PHP 7.4 Security-only-Support

Ab dem 28. November 2021 werden die regulären Entwicklungsarbeiten an der PHP-Version 7.4 eingestellt. Es wird ab dann dann noch für ein weiteres Jahr regelmäßige Updates durch das PHP-Entwicklerteam bei sicherheitsrelevanten Problemen geben, kleinere Fehler werden jedoch nicht mehr behoben.

PHP 7.3 End-of-Life

Ab dem 6. Dezember 2021 wird die Unterstützung der PHP Version 7.3 eingestellt, es wird dann keine weiteren Updates für diese PHP-Version durch das PHP-Entwicklerteam mehr geben. Sie sollten diese PHP-Version daher nach Möglichkeit nicht mehr nutzen. Wir werden jedoch bei schweren sicherheitsrelevanten Problemen zurückportierte Updates aus neueren PHP-Versionen bereitstellen.

PHP 8.1 RC3 zum Testen verfügbar

Auf unseren Webservern steht ab sofort der dritte Release Candidate der kommenden PHP-Version 8.1 zu Testzwecken zur Verfügung.

Beachten Sie dabei bitte, dass es sich noch nicht um die endgültige Release-Version handelt, die planmäßig gegen Ende November erscheinen soll. Bis dahin werden insgesamt 6 Release Candidate Versionen erscheinen, die nur zu Testzwecken genutzt werden sollten.

Mit dem Testen der Release Candidate Versionen können Sie die PHP Entwickler bei der Suche nach letzten Fehlern und Problemen unterstützen und die Kompatibilität Ihrer Web-Anwendungen mit der neuen PHP-Version testen.

Änderungen in PHP 8.1

Da es sich um ein neues Minor-Release handelt, fallen die nicht abwärtskompatiblen Änderungen zur Vorgängerversion 8.0 nur geringfügig aus.

Eine Änderung, die zu Problemen führen kann, ist die Änderung der Standardeinstellung für die MySQLi-Fehlerbehandlung. Bisher war die Standardeinstellung MYSQLI_REPORT_OFF, damit wurden eventuelle Fehler nicht abgefangen, und die Programmausführung im Fehlerfall einfach fortgesetzt. In PHP 8.1 ändert sich die Standardeinstellung auf MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT, damit wird im Fehlerfall eine Exception generiert. Falls diese Exception nicht behandelt wird, können Programme jetzt Fehler anzeigen.

Eine Übersicht über alle Änderungen und Neuerung in PHP 8.1 finden Sie hier.

Neuerungen in PHP 8.1

Eine wichtige Neuerung sind die sogenannten Fibers, damit können in PHP mehrere Aufgaben nebenläufig ausgeführt werden. Es handelt sich jedoch nicht um echte Parallelität; wird ein Fiber gestartet, so wird das Hauptprogramm angehalten, bis der Fiber unterbrochen oder beendet wird . Dieses Feature richtet sich hauptsächlich an Entwickler von PHP-Frameworks, die damit beispielsweise Event Loops implementieren können.

Eine weitere Neuerung ist die Unterstützung von Enumerations, damit können einfache Datentypen mit mehren vordefinierten Werten umgesetzt werden.

Verbesserungen in PHP 8.1

Wir konnten in ersten Tests eine Verbesserung der Ausführungsgeschwindigkeit im Vergleich zur Vorgängerversion 8.0 um bis zu 10% feststellen.

PHP 8.1 aktivieren

Sie können PHP 8.1 wie gewohnt entweder über das Kundenmenü aktivieren, oder über eine .htaccess-Konfigurationsdatei im Anwendungsverzeichnis auf dem Webserver mittels folgender Direktive:
AddHandler application/x-httpd-php81 .php


PHP 8.0 RC1 zum Testen verfügbar

Ab heute können Sie den ersten Release Candidate der neuen PHP Version 8.0 auf unseren Webservern ausprobieren. Beachten Sie dabei bitte, dass es noch nicht die endgültige Release-Version ist, die planmäßig gegen Ende November erscheinen soll, sondern der erste von voraussichtlich 4 Release Candidates, die nur zu Testzwecken genutzt werden sollten.

Sie können damit die PHP Entwickler bei der Suche nach letzten Fehlern und Problemen unterstützen und die Kompatibilität Ihrer Web-Anwendungen mit der neuen PHP-Version testen.

Änderungen in PHP 8.0

Mit dem Sprung auf Version 8.0 gehen diverse nicht abwärtskompatible Änderungen zur Vorgängerversion 7.4 einher, die Anpassungen an vielen Web-Anwendungen erforderlich machen. Es wurden einige als veraltet gekennzeichnete Funktionen entfernt, aber auch neue Funktionen hinzugefügt und Verbesserungen vorgenommen.
Aktuell kommt es bei vielen Web-Anwendungen noch zu kleineren Problemen mit PHP 8.0, dies sollten aber durch Updates im Laufe der nächsten Wochen bis zum finalen Release behoben werden.

In PHP 8.0 wurde die XMLRPC-Extension entfernt, die in den älteren PHP-Versionen auf unseren Webservern verfügbar ist. Diese Extension ist für PHP 8.0 nur noch als 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 Fehlermeldungen vertrauliche Informationen wie z.B. Datenbankzugangsdaten einsehbar sind.

Eine Ä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.

Die vielleicht wichtigste Neuerung in PHP 8.0 ist, dass der PHP OpCode Cache nun einen sogenannten Just-in-Time-Compiler erhalten hat, der die Performance bei sehr CPU-lastigen Scripten verbessern kann. Dies führt aber in der Praxis nur zu geringfügigen Performance-Gewinnen, da viele PHP-Anwendungen nicht sehr CPU-lastig sind und viel Zeit mit dem Warten auf Daten z.B. von einer Datenbank verbringen.

Eine Übersicht über alle Neuerungen und Änderungen zur Vorgängerversion 7.4 finden Sie in der PHP-Upgrade-Dokumentation.

Verbesserungen in PHP 8.0

Wir konnten in ersten Tests eine leichte Verbesserung der PHP-Ausführungsgeschwindigkeit von etwa 5% bis 10% feststellen.


PHP 8.0 aktivieren

Sie können PHP 8.0 wie gewohnt entweder über das Kundenmenü aktivieren, oder über eine .htaccess-Konfigurationsdatei im Anwendungsverzeichnis auf dem Webserver mittels folgender Direktive:
AddHandler application/x-httpd-php80 .php

PHP 7.4 verfügbar

PHP

Auf unseren Webservern steht ab sofort die heute neu erschienene PHP Version 7.4 zur Verfügung. Dies ist die voraussichtlich letzte Version im Release-Zweig 7, im nächsten Jahr soll dann PHP 8 erscheinen.

Neuerungen und Verbesserungen in PHP 7.4

Mit jeder neuen PHP-Version steigt normalerweise auch die Ausführungsgeschwindigkeit für PHP-Skripte. Wir konnten allerdings in ersten Tests nur kleine Performance-Verbesserungen beim Umstieg von PHP 7.3 auf PHP 7.4 feststellen. Der nächste größere Performance-Sprung in PHP wird erst mit dem für PHP 8 geplanten Just-in-Time-Compiler erwartet.

Eine wichtige Neuerung in PHP 7.4 ist das sogenannte Foreign Function Interface (FFI), mit dem C-Bibliotheken ohne den Umweg über eine PHP-Extension genutzt werden können.

Eine weitere Neuerung ist die Preloading-Funktion von OpCache, mit der ganze PHP-Anwendungen vorgeladen werden können. Bisher arbeitet OpCache nur auf Dateiebene, der OpCode wird für jede PHP-Datei einzeln vorgehalten und muss vom PHP-Intepreter bei jedem Skript-Aufruf zunächst noch zu einem ausführbaren Programm zusammengestellt werden (Linking). Dieser Schritt entfällt beim Preloading, dadurch können PHP-Anwendungen etwas schneller geladen werden.

Die Preloading-Funktion kann jedoch nicht einfach nur aktiviert werden; es ist zusätzlich ein spezielles PHP-Skript erforderlich, das alle benötigten PHP-Dateien in den OpCache lädt.  Ein weiterer Nachteil ist, dass PHP-FPM bei jeder Änderung an einer PHP-Datei neu gestartet werden muss, damit die Änderung übernommen wird. Aufgrund dieser Einschränkung können wir die Preloading-Funktion zunächst nicht anbieten.

Weiterhin wird in OpenSSL-Streams jetzt auch TLS 1.3 unterstützt. Dies ist allerdings nur auf unseren neueren Webservern verfügbar, die schon auf unsere aktuelle Hosting-Platform umgestellt wurden.

Eine für Softwareentwickler interessante Neuerung ist die Unterstützung von sogenannten typed Properties. Properties von Klassen kann damit auf Wunsch ein konkreter Datentyp wie string oder int zugewiesen werden. So kann die Typsicherheit von Properties auch ohne aufwändige getter- und setter-Methoden sichergestellt werden.

Weiterhin kann der Null Coalescing Operator ?? nun auch direkt in Zuweisungen genutzt werden, wie etwa in folgendem Beispiel:

// Fetches the request parameter user and results in 'nobody' if it doesn't exist
$username = $_GET['user'] ?? 'nobody';

Eine weitere Änderung wurde beim Bedingungsoperator ? vorgenommen, dieser war bei PHP im Gegensatz zu fast allen anderen Programmiersprachen bisher linksassoziativ. Dieses Verhalten ist nun veraltet, zukünftig müssen hier Klammern genutzt werden.

Eine Übersicht über alle Neuerungen und Änderungen zur Vorgängerversion 7.3 finden Sie in der PHP-Upgrade-Dokumentation.

PHP 7.4 aktivieren

Sie können PHP 7.4 im Kundenmenü oder für einzelne Verzeichnisse per .htaccess-Konfigurationsdatei auf dem Webserver mittels folgender Direktive aktivieren:

AddHandler application/x-httpd-php74 .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?„.

PHP 7.1 End of Life

Mit dem Erscheinen von PHP 7.4 endet auch die Unterstützung der älteren PHP-Version 7.1 durch das PHP-Entwicklerteam, es wird ab Dezember keine weiteren offiziellen Updates für diese PHP-Version mehr geben.

Falls Sie noch PHP 7.1 für Ihre Webseiten nutzen, sollten Sie aus Sicherheitsgründen auf eine neuere PHP-Version umstellen. Wir empfehlen momentan noch PHP 7.3 zu nutzen, da bei PHP 7.4 noch einige Kompatibilitätsprobleme auftreten können.

PHP 7.4 RC1 verfügbar

Auf unseren Webservern steht nun der erste Release Candidate der neuen PHP-Version 7.4 zu Testzwecken zur Verfügung.

Beachten Sie bitte, dass es sich noch um eine frühe Testversion handelt, die kritische Fehler enthalten kann, daher sollte PHP 7.4 noch nicht für produktive Webseiten genutzt werden. Sie können jedoch schon prüfen, ob Ihre Web-Anwendungen mit PHP 7.4 kompatibel sind, und eventuell auftretende Probleme beheben. Die finale Release-Version PHP 7.4.0 wird voraussichtlich Ende November erscheinen.

Neuerungen und Verbesserungen in PHP 7.4

Ein wichtiger Aspekt bei der Entwicklung von neuen PHP-Versionen sind Performance-Verbesserungen. Hier konnten wir in ersten Tests nur geringe Vorteile im Vergleich zur Vorgängerversion 7.3 feststellen.

Die wichtigste Verbesserung im Hinblick auf Performance ist die neue Preloading-Funktion von Opcache; diese kann jedoch in Shared-Hosting-Umgebungen aus technischen Gründen nicht genutzt werden. Die Nutzung von Preloading auf unseren dedizierten Webservern ist prinzipiell möglich; ist aber relativ aufwändig, da das Preloading über ein eigenes PHP-Script erfolgen muss, und bei jeder Änderung an PHP-Dateien ein Neustart von PHP-FPM erforderlich ist.

Eine für Softwareentwickler interessante Neuerung ist die Unterstützung von sogenannten typed Properties. Properties von Klassen kann damit auf Wunsch ein konkreter Datentyp wie string oder int zugewiesen werden. So kann die Typsicherheit von Properties auch ohne aufwändige getter- und setter-Methoden erreicht werden.

Eine Übersicht über alle Neuerungen und Änderungen zur Vorgängerversion 7.3 finden Sie in der PHP-Upgrade-Dokumentation.

PHP 7.4 aktivieren

Sie können PHP 7.4 im Kundenmenü oder per .htaccess-Konfigurationsdatei auf dem Webserver mittels folgender Direktive aktivieren:

AddHandler application/x-httpd-php74 .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?“.