Springe zum Hauptinhalt
Universitäts­rechen­zentrum
Übergang von PHP 7.4 auf PHP 8.2

Übergang von PHP 7.4 auf PHP 8.2

Auf den zentralen Webservern wird Ende Oktober 2024 die PHP-Version von 7.4 auf 8.2 angehoben. Bitte überprüfen Sie Ihre Webseiten und Webanwendungen auf dem Testserver www-test.tu-chemnitz.de, auf dem PHP 8.2 läuft. (Für Ihre persönlichen Webseiten können Sie auf https://www-user-test.hrz.tu-chemnitz.de/ testen.) Die Testserver sind nur aus dem Campusnetz heraus erreichbar.

Neuigkeiten und Änderungen für Webautoren

Wegfall der each()-Funktion

Die von Perl bekannte Funktion each() wird nicht mehr unterstützt. Bevorzugt sollten als Ersatz foreach-Schleifen verwendet werden.

Geänderte Interpretation von Kommentaren mit #

PHP 8 führt den Ausdruck #[Attribute] für Attributdeklarationen ein. Kommentare, die mit # eingeleitet werden, sind weiterhin möglich, dürfen aber nicht diese Klammerung verwenden. Wir empfehlen, nur noch Kommentare mit // bzw. /* ... */ einzusetzen.

Wegfall das Zugriffs auf eine Array-Element mit geschweiften Klammern

Für den Zugriff auf ein Array-Element müssen ab PHP 8 zwingend eckige Klammern verwendet werden, $feld{'element'} ist nicht mehr möglich. Dies muss entsprechend durch $feld['element'] ersetzt werden.

Änderung bei Klassendefinitionen

Der Konstruktor kann nicht mehr wie die Klasse benannt werden, sondern muss nun die geschützte Bezeichnung __construct haben.

Änderungen bei Datum-/Uhrzeit-Funktionen

Der Aufruf von mktime() oder gmmktime() ohne Parameter ist nicht mehr möglich. Nur die Funktion time() kann noch ohne Parameter aufgerufen werden, um den aktuellen Zeitstempel zu erhalten. Für komplexe Operationen empfehlen wir die Verwendung der Klasse DateTime.

Änderungen bei LDAP-Funktionen

Die Funktionen ldap_sort(), ldap_control_paged_result() und ldap_control_paged_result_response() wurden entfernt.

Änderungen bei Lokalisierungsfunktionen

Der Aufruf von setlocale() ist seit PHP 8 zwingend notwendig, sonst wird der Standard (Locale „C“) verwendet. String-Funktionen wie strtolower() oder stripos() verwenden nun generell das ASCII-Format; für lokalisierte Anwendung müssen die Multibyte-String-Varianten verwendet werden.

Änderungen bei PostgreSQL-Funktionen

Die Funktion pg_connect() verlangt zwingend eine Verbindungszeichenkette, mehrere Parameter werden nicht mehr unterstützt. Für Datenbankoperationen empfehlen wir aber sowieso die Verwendung der PDO-Klasse.

Änderung an der Auswertung von URLs

Bislang ließ die zentrale Konfiguration der Webserver zu, nicht real existierende Pfade zu einer Webseite zuzuordnen. Dies konnte man zum Beispiel mit einer Rewrite-Rule umsetzen. Im Zuge der Umstellung benötigt man nun zusätzlich AcceptPathInfo On in der betreffenden .htaccess. Bei fehlender Konfiguration wirft der Webserver sonst einen HTTP-404-Fehler.

Weitere weggefallene Funktionen und Konstanten

U. a. diese Funktionen und Konstanten gibt es seit PHP 8 nicht mehr: money_format(), restore_include_path(), get_magic_quotes_gpc(), get_magic_quotes_runtime(), fgetss() und FILTER_SANITIZE_MAGIC_QUOTES.

Für die Entwicklung und Fehlersuche: Einblick in die Fehler-Logs des Servers www-test.tu-chemnitz.de bzw. des Servers www-user-test.hrz.tu-chemnitz.de (für die eigene IP-Adresse)

Dokumentation