Nicht abwärtskompatible Änderungen
Obwohl der meiste PHP 5 basierende Code ohne Änderungen funktionieren sollte, gibt es einige nicht abwärtskompatible Änderungen:
- Safe mode wird nicht länger unterstützt. Alle Anwendungen, die sich auf safe mode verlassen, benötigen unter Umständen Anpassungen bezüglich der Sicherheit.
-
Magic quotes wurde entfernt.
Anwendungen, die sich auf dieses Feature verlassen, müssen aktualisiert
werden, um Sicherheitsprobleme zu vermeiden.
get_magic_quotes_gpc() und
get_magic_quotes_runtime() geben nun immer
FALSE
zurück. set_magic_quotes_runtime() erzeugt eine Fehler der StufeE_CORE_ERROR
, wenn versucht wird Magic quotes zu aktivieren. - Die register_globals und register_long_arrays php.ini Direktiven wurden entfernt.
- Die mbstring.script_encoding Direktive wurde entfernt. Statt dessen ist zend.script_encoding zu verwenden.
- Referenzübergabe zur Laufzeit wurde entfernt.
- Die break und continue Anweisungen akzeptieren keine variablen Argumente mehr, d.h. es ist nicht möglich break 1 + foo() * $bar; zu schreiben. Statische Argumente wie break 2; funktionieren weiterhin. Als Nebeneffekt dieser Änderung sind break 0; und continue 0; nicht länger erlaubt.
-
Das Setzen der Zeitzone mit der TZ Umgebungsvariablen wird nicht länger von
der Datum und Uhrzeit Extension unterstützt.
Statt dessen muss eine Zeitzone unter Verwendung der
date.timezone php.ini Option
oder der date_default_timezone_set() Funktion angegeben werden.
PHP wird nicht länger versuchen die Zeitzone zu erraten, sondern wird statt dessen
auf "UTC" zurückfallen und eine
E_WARNING
erzeugen. -
Nichtnumerische Zeichenkettenoffsets, z.B. $a['foo'], wobei $a eine
Zeichenkette ist, geben nun false für isset() und true
für empty() zurück, und erzeugen ein
E_WARNING
, wenn versucht wird, sie zu verwenden. Offsets der Typen double, bool und null erzeugen einE_NOTICE
. Numerische Zeichenketten (z.B. $a['2']) funktionieren wie bisher. Es ist zu beachten, dass Offsets wie '12.3' und '5 irgendwas' als nichtnumerisch angesehen werden, und einE_WARNING
erzeugen, aber aus Gründen der Abwärtskompatibilität zu 12 bzw. 5 konvertiert werden. Hinweis: der folgende Code gibt unterschiedliche Ergebnisse zurück. $str='abc';var_dump(isset($str['x'])); // false unter PHP 5.4 oder später, aber true unter 5.3 oder weniger -
Konvertieren von Arrays zu String wird nun einen Fehler der Stufe
E_NOTICE
verursachen, aber das Ergebnis der Umwandlung ist weiterhin die Zeichenkette "Array". -
NULL
,FALSE
oder leere Zeichenketten durch Hinzufügen einer Eigenschaft in ein Objekt zu konvertieren wird nun einen Fehler der StufeE_WARNING
stattE_STRICT
ausgeben. - Parameternamen, die Superglobale schattieren, verursachen nun einen fatalen Fehler. Das verbietet Code wie function foo($_GET, $_POST) {}.
- Die Salsa10 und Salsa20 Hash-Algorithmen wurden entfernt.
- Der Tiger Hash-Algorithmus verwendet nun Big-Endian-Byte-Reihenfolge. Wie Code geschrieben werden kann, der sowohl mit PHP 5.3 als auch 5.4 kompatibel ist, kann diesem Beispiel entnommen werden.
-
array_combine() gibt nun array()
anstatt
FALSE
zurück, wenn zwei leere Arrays als Parameter übergeben wurden. -
Wird htmlentities() mit asiatischen Zeichensätzen verwendet,
funktioniert es wie htmlspecialchars() - das war auch in
früheren PHP Versionen so, aber nun wird ein Fehler der Stufe
E_STRICT
ausgegeben. -
Der dritte Parameter von ob_start() wurde von
boolean
erase
in integerflags
geändert. Es ist zu beachten, dass Code dererase
ausdrücklich aufFALSE
setzt, sich unter PHP 5.4 nicht länger wie erwartet verhält; dieses Beispiel zeigt wie Code geschrieben wird, der kompatibel zu PHP 5.3 und PHP 5.4 ist.
Die folgenden Schlüsselwörter sind nun reserviert, und dürfen nicht als Namen von Funktionen, Klassen usw. genutzt werden.
Folgende Funktionen wurden von PHP entfernt:
- define_syslog_variables()
- import_request_variables()
- session_is_registered(), session_register() und session_unregister().
- Die Aliase mysqli_bind_param(), mysqli_bind_result(), mysqli_client_encoding(), mysqli_fetch(), mysqli_param_count(), mysqli_get_metadata(), mysqli_send_long_data(), mysqli::client_encoding() und mysqli_stmt::stmt().
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-migration54.incompatible.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.