Sonstige Änderungen
Meldungen und Warnungen bei Rechenoperationen mit ungültigen Zeichenketten
Es wurden neue Fehler der Stufen E_WARNING
und
E_NOTICE
hinzugefügt, die ausgelöst werden, wenn mit
Operatoren, die Zahlen erwarten (+
-
*
/
**
%
<<
>>
|
&
^
) oder
mit deren entsprechenden Zuweisungen ungültige Zeichenketten erzwungen
werden. Ein Fehler der Stufe E_NOTICE
wird ausgelöst,
wenn eine Zeichenkette mit einem numerischen Wert beginnt, aber
nachfolgende nicht-numerische Zeichen enthält, und ein Fehler der Stufe
E_WARNING
wird ausgelöst, wenn eine Zeichenkette keinen
numerischen Wert enthält.
<?php
'1b' + 'something';
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Notice: A non well formed numeric value encountered in %s on line %d Warning: A non-numeric value encountered in %s on line %d
Warnung beim Überlauf einer oktalen Maskierungs-Sequenz
Bisher wurde keine Warnung ausgegeben, wenn eine Maskierungs-Sequenz in
oktaler Notation überlief. Nun läuft sie immer noch über, löst aber in
diesem Fall einen Fehler der Stufe E_WARNING
aus.
<?php
var_dump("\500");
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d string(1) "@"
Unstimmigkeiten bei $this
behoben
Während $this
in PHP als spezielle Variable betrachtet
wird, fehlte es an geeigneten Überprüfungen, um sicherzustellen, dass es
nicht als Variablenname verwendet oder neu zugewiesen wird. Dies wurde nun
korrigiert, sodass $this
keine benutzerdefinierte
Variable mehr sein kann, keinen anderern Wert zugewiesen bekommt und nicht
mehr globalisiert werden kann.
Erzeugung von Session-IDs ohne Hashing
Session-IDs werden bei der Erzeugung nicht mehr gehasht. Wegen dieser Änderung wurden die folgenden vier INI-Einstellungen entfernt:
-
session.entropy_file
-
session.entropy_length
-
session.hash_function
-
session.hash_bits_per_character
Außerdem wurden die folgenden zwei neuen INI-Einstellungen hinzugefügt:
-
session.sid_length
- definiert die Länge der Session-ID. Aus Gründen der Abwärtskompatibilität ist der Standardwert 32 Zeichen. -
session.sid_bits_per_character
- definiert die Anzahl von Bits, die pro Zeichen gespeichert werden sollen (d. h. mit diesem Wert kann der für die Session-ID zulässige Wertebereich erlaubter Zeichen erhöht werden). Aus Gründen der Abwärtskompatibilität ist der Standardwert 4.
Änderungen bei der Handhabung von INI-Dateien
-
precision
-
Wenn der Wert auf -1 gesetzt wird, dann wird der dtoa-Modus 0 verwendet. Der Standardwert ist weiterhin 14.
-
serialize_precision
-
Wenn der Wert auf -1 gesetzt wird, dann wird der dtoa-Modus 0 verwendet. Der Standardwert ist nun -1.
-
gd.jpeg_ignore_warning
-
Der Standardwert für diese php.ini-Einstellung wurde auf 1 geändert, sodass libjpeg-Warnungen in der Standardeinstellung ignoriert werden.
-
opcache.enable_cli
-
Der Standardwert für diese php.ini-Einstellung wurde in PHP 7.1.2 auf 1 (aktiviert) gesetzt und in PHP 7.1.7 wieder auf 0 (deaktiviert).
Erzeugung der Session-ID nur mit einem CSPRNG
Session-IDs werden nun nur noch mit einem CSPRNG erzeugt.
Aussagekräftigere TypeError-Meldungen, wenn null
erlaubt ist
Bei Typüberprüfungen durch arg_info geben
TypeError-Exceptions nun aussagekräftigere
Fehlermeldungen aus. Wenn der Parametertyp oder der Rückgabetyp null
akzeptiert (indem er entweder einen Standardwert von null
hat oder ein
nullable-Typ ist), dann wird dies nun in der Fehlermeldung mit einem
Hinweis wie "must be ... or null" oder "must ... or be null" erwähnt.