PHP 8.4.2 Released!

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.

add a note

User Contributed Notes 1 note

up
18
Ta7To7
6 years ago
Note that using Incrementing/Decrementing operators on string is legal
<?php
$str
= "";
echo ++
$str; // output: 1
?>
To Top