PHP 8.5: Neuerungen und Update auf Ihrem Webhosting

14 Min. Lesezeit

PHP 8.5 wurde am 20. November 2025 veröffentlicht und ist derzeit die neueste stabile Version von PHP. Es brachte einige sprachliche Neuerungen mit sich, auf die Entwickler seit Jahren gewartet hatten (den Pipe-Operator, clone with, die integrierte URI-Verarbeitung), und machte einige alte Lösungen überflüssig, die in älteren PHP-Erweiterungen und Templates noch vorkommen. Die gute Nachricht: Sie müssen kein Programmierer sein, um davon zu profitieren. Auf unserem Webhosting mit NVMe-SSDs können Sie zwischen PHP 8.3, 8.4 und 8.5 wählen, und auf dem cPanel-Hosting können Sie mit dem CloudLinux PHP Selector mit einem Klick auf eine beliebige Version von PHP 5.1 bis 8.5 umstellen – jederzeit rückgängig machbar.

In diesem Artikel geben wir Ihnen einen kurzen Überblick darüber, was es Neues in PHP 8.5 gibt, wie lange die einzelnen PHP-Zweige noch mit Patches versorgt werden und wie Sie die Kompatibilität Ihrer Website überprüfen können, bevor Sie umsteigen. Am Ende zeigen wir Ihnen außerdem, was Sie tun sollten, falls nach dem Umstieg etwas nicht funktioniert.

Wie lange werden die PHP-Versionen unterstützt?

Jeder PHP-Zweig erhält zwei Jahre lang aktiven Support (Fehlerbehebungen und Sicherheitsupdates), danach weitere zwei Jahre lang nur noch Sicherheitsupdates. Wenn ein Zweig dieses Ende erreicht, wird er von den PHP-Entwicklern nicht mehr aktualisiert – auch dann nicht, wenn darin schwerwiegende Sicherheitslücken entdeckt werden. Offizielle Angaben von php.net:

PHP-Zweig Veröffentlichung Ende des aktiven Supports Sicherheitsupdates abgeschlossen
8.1 25. November 2021 25. November 2023 31. Dezember 2025 (abgelaufen)
8.2 8. Dezember 2022 31. Dezember 2024 31. Dezember 2026
8.3 23. November 2023 31. Dezember 2025 31. Dezember 2027
8.4 21. November 2024 31. Dezember 2026 31. Dezember 2028
8.5 20. November 2025 31. Dezember 2027 31. Dezember 2029

PHP 8.2 wird also Ende des Jahres nicht mehr unterstützt; Einzelheiten und Maßnahmen finden Sie in unserem Artikel zum Ende der Unterstützung für PHP 8.2. Was dies in der Praxis bedeutet, hat auch die PHP2Shell-Sicherheitslücke im Oktober gezeigt: php.net hat nur für die unterstützten Zweige eine korrigierte Version veröffentlicht.

Die wichtigsten Neuerungen in PHP 8.5

Pipe-Operator (|>)

Der Pipe-Operator leitet einen Wert bei der Ausführung von Funktionen von links nach rechts weiter: Jeder Schritt erhält das Ergebnis des vorherigen Schritts. Auf diese Weise müssen weder verschachtelte Funktionsaufrufe von innen nach außen gelesen noch temporäre Variablen erstellt werden.

$title = ' PHP 8.5 Released ';

$slug = $title
    |> trim(...)
    |> (fn($str) => str_replace(' ', '-', $str))
    |> (fn($str) => str_replace('.', '', $str))
    |> strtolower(...);

// "php-85-released"

Auf der rechten Seite kann ein beliebiger, mit einem Parameter aufrufbarer Wert stehen. Die Pfeilfunktionen müssen in Klammern gesetzt werden, wie im Beispiel zu sehen ist.

Klonen mit

Die Funktion clone() kann nun auch ein Array mit den zu ändernden Eigenschaften entgegennehmen. Dies ist vor allem bei readonly-Klassen von Vorteil, bei denen es bisher umständlich war, eine Kopie eines Objekts mit ein oder zwei abweichenden Werten zu erstellen (das sogenannte „with-er“-Muster):

public function withAlpha(int $alpha): self
{
    return clone($this, [
        'alpha' => $alpha,
    ]);
}

Integriertes URI-Erweiterung

Das neue, stets verfügbare URI-Erweiterung verarbeitet Webadressen standardkonform, sowohl gemäß RFC 3986 als auch gemäß dem von Browsern verwendeten WHATWG-URL-Standard. Bislang wurde hierfür die Funktion parse_url() verwendet, die in einigen Extremfällen die Adresse anders interpretierte als der Browser, was zu Sicherheitslücken führen konnte.

use Uri\Rfc3986\Uri;

$uri = new Uri('https://php.net/releases/8.5/en.php');
echo $uri->getHost(); // "php.net"

Das Attribut #[\NoDiscard]

Wenn Sie eine Funktion mit diesem Attribut kennzeichnen, gibt PHP eine Warnung aus, sobald jemand den Rückgabewert nicht verwendet. Dies ist bei Funktionen nützlich, bei denen das Weglassen des Rückgabewerts fast sicher einen Fehler darstellt (beispielsweise wenn das Ergebnis angibt, ob die Operation erfolgreich war). Wenn Sie den Wert absichtlich verwerfen, können Sie dies durch die Typumwandlung (void) kennzeichnen.

array_first() und array_last()

Zwei seit langem vermisste Funktionen: Sie geben das erste bzw. das letzte Element eines Arrays zurück; bei einem leeren Array wird null zurückgegeben. Bislang musste man hierfür auf Umwege wie reset(), end() oder array_key_first() zurückgreifen.

$lastEvent = array_last($events);

Closures in konstanten Ausdrücken

Statische Closures und First-Class-Callables (z. B. strlen(...)) können nun auch in konstanten Ausdrücken verwendet werden: in den Parametern von Attributen, in den Standardwerten von Eigenschaften und Parametern sowie in Konstanten. Frameworks können damit beispielsweise die Berechtigungsprüfung direkt in einem Attribut festlegen.

Backtrace bei schwerwiegenden Fehlern

Die Meldung zu schwerwiegenden Fehlern (beispielsweise bei Überschreitung der maximalen Ausführungszeit) enthält nun den Aufrufstapel (Backtrace), sodass aus dem Fehlerprotokoll ersichtlich ist, welcher Codeabschnitt zu dem Fehler geführt hat. Dies wird durch die neue INI-Einstellung fatal_error_backtraces geregelt. Bei einem durch ein langsames WordPress-Plugin verursachten Fehler „Maximum execution time exceeded“ erspart Ihnen dies viel Rätselraten.

Weitere Neuigkeiten in Kürze

  • Closure::getCurrent() – einfachere Rekursion in anonymen Funktionen.
  • Die Attribute können auch auf Konstanten, auf Eigenschaften mit dem Attribut #[\Override], auf Traits mit dem Attribut #[\Deprecated] sowie auf Konstanten angewendet werden.
  • Asymmetrische Sichtbarkeit bei statischen Eigenschaften und die Kennzeichnung final bei Eigenschaften, die im Konstruktor gefördert werden.
  • Persistente cURL-Share-Handles (curl_share_init_persistent()): DNS-Auflösungen und Verbindungen können über mehrere Anfragen hinweg wiederverwendet werden.
  • Die Funktionen setcookie() und setrawcookie() unterstützen partitioned Schlüssel.
  • Neue Funktionen get_error_handler() und get_exception_handler().
  • Neue INI-Einstellung max_memory_limit, die eine Obergrenze festlegt, bis zu welcher Höhe das memory_limit während der Ausführung erhöht werden kann.
  • Der Befehl php --ini=diff zeigt an, welche Einstellungen von den Standardeinstellungen abweichen.
  • OPcache ist ab sofort immer Teil von PHP und keine separat zu ladende Erweiterung mehr (die Einstellung opcache.enable bleibt weiterhin gültig).

Was wurde in PHP 8.5 als veraltet eingestuft?

Die veralteten (deprecated) Funktionen funktionieren vorerst noch, doch bei ihrer Verwendung schreibt PHP die Warnung E_DEPRECATED in das Protokoll; in einer späteren Hauptversion könnten sie jedoch entfernt werden. In älteren Plugins und Templates treten diese am häufigsten auf:

  • Der Backtick-Operator: Die Form `ls -la` als Abkürzung für shell_exec() ist veraltet; stattdessen ist shell_exec('ls -la') zu verwenden.
  • Nicht-kanonische Typangaben: Anstelle von (boolean), (integer), (double) und (binary) sind (bool), (int), (float) und (string) anzugeben.
  • null als Array-Index: Die Übergabe von $a[null] und null an die Funktion array_key_exists() ist veraltet; stattdessen sollte eine leere Zeichenkette verwendet werden.
  • Mit einem Semikolon abgeschlossener case: Die Zweige des switch müssen mit einem Doppelpunkt abgeschlossen werden.
  • __sleep() und __wakeup(): „sanfte“ Veralterung ohne Vorwarnung; im neuen Code werden __serialize() und __unserialize() empfohlen.
  • Überflüssige „Schließfunktionen“: Die Funktionen curl_close(), imagedestroy(), finfo_close() und xml_parser_free() sind veraltet, da die Ressourcen nun Objekte sind und automatisch freigegeben werden.

Einige Änderungen lösen zudem eine Warnung aus: beispielsweise wenn eine Gleitkommazahl nicht als Ganzzahl passt und dennoch in den Typ int umgewandelt wird, oder wenn ein Wert, der kein Array ist, mit den Konstruktoren [] oder list() zerlegt wird. Die INI-Einstellung disable_classes wurde abgeschafft. Die vollständige Liste finden Sie im Migrationsleitfaden auf php.net.

Was bedeutet das alles für Ihre Website?

Wenn Sie WordPress, Joomla, PrestaShop oder eine auf einem Framework basierende Anwendung betreiben, müssen Sie die neuen Sprachfunktionen nicht selbst nutzen: Die Entwickler integrieren sie nach und nach. Die Frage ist, ob der derzeit verwendete Code (Kern, Plugins und Templates) unter PHP 8.5 fehlerfrei läuft.

Das WordPress-Kernmodul unterstützt PHP 8.5 bereits seit Version 6.9 (damals noch mit dem Vermerk „Beta“, der inzwischen entfernt wurde). Bei den Plugins und WordPress-Themes ist das Bild hingegen gemischt: Gut gepflegte Plugins und WordPress-Themes passen sich meist schnell an neue Versionen an, während seit langem nicht aktualisierte, benutzerdefinierte oder veraltete Plugins und WordPress-Themes Probleme verursachen können. Darüber, welche PHP-Version für WordPress am besten geeignet ist, haben wir in einem separaten Artikel ausführlicher berichtet.

Vor dem Update: So überprüfen Sie die Kompatibilität

  1. Erstellen Sie ein Backup – sowohl der Dateien als auch der Datenbank. Auf dem Webhosting-Account wird ab dem „Web Starter“-Paket zwar automatisch ein Backup erstellt, doch eine eigene Kopie vor dem Wechsel kann nicht schaden: Exportieren Sie die Datenbank über phpMyAdmin und laden Sie die Dateien per FTP herunter. Auf dem cPanel-Hosting können Sie auch eine Sicherung des gesamten Kontos erstellen (Anleitung hier); bei WordPress reicht ein Plugin aus.
  2. Aktualisieren Sie alles auf die aktuelle PHP-Version. Aktualisieren Sie zunächst das WordPress-Kernmodul, die Plugins und das WordPress-Theme und erst danach PHP. Wenn Sie alles auf einmal ändern, ist es schwierig herauszufinden, was den Fehler verursacht hat.
  3. Sehen Sie sich die Produktseite des Plugins an. Auf WordPress.org werden bei jedem Plugin die erforderliche PHP-Version sowie das Datum der letzten Aktualisierung angezeigt. Bei einem Plugin, das seit ein oder zwei Jahren nicht mehr aktualisiert wurde, empfiehlt es sich, nach einer Alternative zu suchen.
  4. Führen Sie eine statische Überprüfung durch, wenn Sie über eigenen Code verfügen. Der PHPCompatibility-Regelsatz sucht mithilfe von PHP_CodeSniffer im Code nach veralteten oder eingestellten Funktionen. Die Regeln für PHP 8.5 befinden sich im Entwicklerzweig 10 (die alte Version 9.3.5 kennt nur die Änderungen von PHP 7.x). Führen Sie den Befehl auf Ihrem eigenen Rechner im Projektverzeichnis aus:

    composer require --dev phpcompatibility/php-compatibility:"^10.0.0@dev"
    vendor/bin/phpcs -p wp-content/themes/sajat-sablon --standard=PHPCompatibility --runtime-set testVersion 8.5
    
  5. Probieren Sie es an einer Testumgebung aus. Am sichersten ist es, wenn Sie die Umstellung zunächst auf einer Kopie der Website (Staging-Umgebung) vornehmen. Auf dem cPanel-Hosting-Account erstellt das WP Toolkit eine solche Umgebung mit wenigen Klicks (die Schritte zum Staging mit dem WP Toolkit); weitere Informationen zu den Methoden finden Sie in unserem Artikel zum Thema WordPress-Staging.
  6. Aktivieren Sie das Fehlerprotokoll. Bei WordPress können Sie in der Datei wp-config.php Fehler und Warnungen so in die Datei wp-content/debug.log umleiten, dass sie für Besucher nicht sichtbar sind:

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    

    Setzen Sie nach Abschluss der Tests den Wert von WP_DEBUG wieder auf false zurück und löschen Sie die Protokolldatei.

Klicken Sie nach der Umstellung nacheinander auf die wichtigsten Bereiche der Website: die Startseite, einen Beitrag, das Kontaktformular, im Online-Shop den Warenkorb und den Bezahlvorgang sowie den Administrationsbereich. Sehen Sie sich anschließend das Fehlerprotokoll an: Die Warnungen zu veralteten Plugins verursachen zwar noch keine Fehler, zeigen jedoch an, welche Plugins aktualisiert oder ersetzt werden müssen.

Wechsel der PHP-Version auf dem Webhosting-Konto (KeyHelp)

Das Control Panel unseres Webhostings ist KeyHelp (die Grundlagen werden in unserer Anleitung für die ersten Schritte vorgestellt). Hier können Sie die PHP-Version für jede Domain einzeln einstellen:

  1. Melden Sie sich im KeyHelp-Dashboard an und öffnen Sie den Menüpunkt „Domains“.
  2. Klicken Sie in der Domain-Zeile auf das Stiftsymbol und anschließend auf die Registerkarte „Erläuterung“.
  3. Wählen Sie in der Liste** der PHP-Interpreter** die gewünschte Version aus (8.3, 8.4 oder 8.5). Wenn Sie dies auch für die Subdomains (z. B. www-re) wünschen, aktivieren Sie die Option „PHP-Interpreter auf alle Subdomains anwenden“ und speichern Sie anschließend die Änderung.
  4. Laden Sie die Seite erneut und überprüfen Sie, ob sie ordnungsgemäß funktioniert.

Da auf dem Webhosting-Server nur unterstützte PHP-Versionen ausgeführt werden, stellt sich hier nicht die Frage, ob die jeweilige Version sicher ist, sondern welche Version für Ihre Website am besten geeignet ist. Sollten Sie die entsprechende Einstellung nicht finden oder unsicher sein, schreiben Sie uns bitte, und wir helfen Ihnen gerne weiter.

Wechsel der PHP-Version auf einem cPanel-Hosting-Account (CloudLinux PHP Selector)

Auf cPanel-Hosting-Konten legt der CloudLinux PHP Selector (in cPanel: „Select PHP Version“) die PHP-Version für das gesamte Hosting-Konto fest. Die einzelnen Schritte werden in dem Knowledge-Base-Artikel zur Änderung der Standard-PHP-Version mit Abbildungen erläutert; kurz gesagt:

  1. Öffnen Sie in der cPanel-Softwaregruppe den Menüpunkt „Select PHP Version“.
  2. Wählen Sie in der Liste „Aktuelle PHP-Versionen“ die Version 8.5 (oder die gewünschte Version) aus und bestätigen Sie Ihre Auswahl mit der Schaltfläche „Als aktuell festlegen“.
  3. Überprüfen Sie die Erweiterungen. Im PHP Selector können die Erweiterungen (z. B. imagick, intl oder ioncube_loader) für jede Version separat aktiviert werden. Überprüfen Sie daher nach einem Wechsel auf eine neue Version, ob die für Ihre Website erforderlichen Module aktiviert sind. Einzelheiten finden Sie im Artikel zur Verwaltung von PHP-Erweiterungen.

Wenn auf Ihrem Webhosting mehrere Seiten laufen und nur eine davon eine andere Version benötigt, können Sie mit einer Zeile in der .htaccess-Datei für jedes Verzeichnis eine andere PHP-Version festlegen (Einstellung unterschiedlicher PHP-Versionen pro Verzeichnis). Für eine ältere Anwendung ist die Verfügbarkeit älterer Versionen auf dem cPanel-Hosting gegeben; inwieweit diese sicher sind, erfahren Sie in unserem Artikel über HardenedPHP.

Falls nach dem Wechsel etwas nicht funktioniert

Die Änderung der PHP-Version wird bei beiden Hosting-Typen sofort wirksam und kann ebenso sofort rückgängig gemacht werden. Sollte die Seite einen leeren Bildschirm oder den Fehler „500 Internal Server Error“ anzeigen, ist der erste Schritt stets folgender: Setzen Sie die vorherige Version wieder ein, damit die Besucher wieder eine funktionierende Seite sehen. Anschließend können Sie in aller Ruhe herausfinden, was den Fehler verursacht hat.

  • Sehen Sie sich das Fehlerprotokoll an. Die Meldung zum schwerwiegenden Fehler gibt den Dateinamen und die Zeilennummer an; in PHP 8.5 wird bereits die gesamte Aufrufkette mitangezeigt. Wenn der Pfad auf ein Unterverzeichnis von wp-content/plugins/ verweist, haben Sie das betreffende Plugin gefunden.
  • „Call to undefined function“: Meistens fehlt eine Erweiterung (Modul) in der neuen Version; aktivieren Sie sie bitte im cPanel im PHP-Selektor.
  • Ein Plugin verursacht den Fehler: Aktualisieren Sie es oder deaktivieren Sie es, falls keine neuere Version verfügbar ist. Sollte sich auch das Admin-Panel nicht laden lassen, benennen Sie das Verzeichnis des Plugins im Dateimanager oder per FTP um, damit WordPress es deaktiviert.
  • „Deprecated“-Meldungen auf der Seite: Dies ist kein Fehler, lediglich die Anzeige von Fehlern ist aktiviert. Deaktivieren Sie die Anzeige auf der Live-Seite (display_errors = Off), die Protokollierung kann aktiviert bleiben.

Die allgemeinen Schritte zur Fehlerbehebung sind in unserem Artikel zur Behebung des 500er-Fehlers sowie in der Anleitung zum „weißen Bildschirm“ bei WordPress zusammengefasst.

Welche Version sollten Sie jetzt wählen?

  • PHP 8.5, sofern alle Teile Ihrer Website dies unterstützen: Diese Version erhält am längsten Updates, nämlich bis Ende 2029.
  • PHP 8.4 ist eine gute und sichere Standardversion, falls ein oder zwei Ihrer Plugins noch nicht auf Version 8.5 umgestellt wurden: Es erhält bis Ende 2026 aktiven Support und bis Ende 2028 Sicherheitspatches.
  • PHP 8.3 dient nur vorübergehend als Übergangslösung, falls eines Ihrer wichtigen Plugins mit den neueren Versionen nicht kompatibel ist: Es erhält bis Ende 2027 Sicherheitsupdates.
  • PHP 8.2 und ältere Versionen: nur, wenn es keine andere Lösung gibt, und planen Sie die Umstellung so bald wie möglich.

Falls Sie noch über die Bedeutung des Updates nachdenken und sich fragen, warum ein PHP-Update im Hinblick auf Geschwindigkeit und Sicherheit wichtig ist, haben wir dies in einem separaten Artikel ausführlicher behandelt.

Häufig gestellte Fragen

Wird meine Website mit PHP 8.5 schneller?

PHP 8.5 bringt keinen so großen Leistungssprung mit sich wie seinerzeit PHP 7 oder 8.0. Wenn Sie jedoch von einer Version 7.4 oder 8.0 umsteigen, können sich sowohl die Geschwindigkeit als auch der Speicherverbrauch spürbar verbessern, und was mindestens ebenso wichtig ist: Die unterstützte Version erhält Sicherheitspatches.

Muss der Code meiner Website überarbeitet werden?

Bei fertigen Systemen (WordPress, Online-Shop-Engine) ist dies in der Regel nicht erforderlich: Es reicht aus, wenn Sie den Kern, die Plugins und das Theme auf dem neuesten Stand halten. Bei individuellen Entwicklungen sollten Sie einen PHPCompatibility-Check durchführen und das Fehlerprotokoll auf Warnungen bezüglich veralteter Funktionen überprüfen.

Woher weiß ich, welche PHP-Version derzeit auf meiner Website läuft?

In WordPress wird dies auf der Seite „Website Health“ im Menü „Tools“ unter der Registerkarte „Informationen“ im Abschnitt „Server“ angezeigt. In cPanel finden Sie die Angabe oben auf der Seite „Select PHP Version“, in KeyHelp in der Spalte „PHP-Version“ der Domain-Liste (durch Anklicken der Versionsnummer wird die vollständige phpinfo-Ausgabe geöffnet). Bei einer individuellen Seite wird dies auch durch eine Datei angezeigt, die einen phpinfo()-Aufruf enthält; löschen Sie diese nach der Überprüfung.

Kann ich eine Wiederherstellung durchführen, falls etwas nicht funktioniert?

Ja, der Versionswechsel kann jederzeit rückgängig gemacht werden und tritt sofort in Kraft. Daher empfiehlt es sich, den Wechsel außerhalb von Spitzenzeiten vorzunehmen und die Seite nach dem Wechsel sofort vollständig durchzuklicken.

Wie sieht es mit VPS aus?

Auf Ihrem eigenen Server müssen Sie PHP selbst installieren und aktualisieren, entweder über die Pakete Ihrer Distribution oder aus einem externen Repository. Wenn Sie sich nicht darum kümmern möchten, übernehmen wir bei den oben genannten Hosting-Angeboten die Aktualisierung der PHP-Versionen und die Installation von Sicherheitspatches.

Zurück zum Blog