Die Verwendung der Option -a ohne die
Erweiterung readline führt nun zu
einem Fehler. Zuvor hatte -a ohne readline, abgesehen von
der zusätzliche Meldung "Interactive mode enabled"
, das
gleiche Verhalten wie der Aufruf von php ohne
Parameter. Dieser Modus war nicht interaktiv.
Die Fähigkeit, remote zu debuggen, wurde von phpdbg entfernt.
Die Reihenfolge der Eigenschaften, die in foreach
,
var_dump(), serialize(),
Objektvergleichen etc. verwendet werden, wurde geändert. Die Eigenschaften
sind jetzt so geordnet, wie sie deklariert und vererbt wurden. Die
Eigenschaften, die in einer Basisklasse deklariert sind, stehen vor den
Kind-Eigenschaften.
Diese Reihenfolge entspricht dem internen Layout der Eigenschaften in der
zend_object
-Struktur und reproduziert die Reihenfolge in
default_properties_table[]
und
properties_info_table[]
. Die alte Reihenfolge war nicht
dokumentiert und wurde durch Implementierungsdetails der Klassenvererbung
verursacht.
Das Flag FILTER_FLAG_ALLOW_OCTAL
des Filters
FILTER_VALIDATE_INT
akzeptiert nun oktale
Zeichenketten mit vorangestelltem Oktalpräfix
("0o"
/"0O"
).
Alle GMP-Funktionen akzeptieren nun oktale
Zeichenketten mit vorangestelltem Oktalpräfix
("0o"
/"0O"
).
Die Methode PDO::getAttribute() gibt in Verbindung
mit PDO::ATTR_SERVER_INFO
und
PDO::ATTR_SERVER_VERSION
nun Werte zurück, anstatt
eine PDOException auszulösen.
Die Methoden ReflectionProperty::setAccessible() und ReflectionMethod::setAccessible() haben keine Auswirkung mehr. Bei Eigenschaften und Methoden wird nun immer davon ausgegangen, dass sie über Reflection zugänglich sind.
syslog() ist nun binärsicher.
imagewebp() kann nun durch Übergabe von
IMG_WEBP_LOSSLESS
als Qualitätsparameter verlustfreie
WebP-Kodierungen durchführen.
Diese Konstante ist nur definiert, wenn die verwendete libgd die verlustfreie WebP-Kodierung unterstützt.
Wenn PHP gegen die Bibliothek libmysqlclient gelinkt wird, sind nun die Funktionen mysqli_stmt::next_result() und mysqli::fetch_all() verfügbar.
Die Erweiterung OpenSSL benötigt nun mindestens die OpenSSL-Version 1.0.2.
OpenSSL 3.0 wird nun unterstützt. Es ist zu beachten, dass viele Verschlüsselungsmethoden nicht mehr standardmäßig aktiviert sind (es handelt sich um einen Teil des Legacy-Anbieters), und dass die Validierung (z. B. minimale Schlüsselgrößen) jetzt strenger ist.
Für Signaturen wird nun standardmäßig SHA256 verwendet.
Die Unterstützung für OpenSSL_SHA256- und OpenSSL_SHA512-Signaturen wurde hinzugefügt.
Für das Sicherheitsprotokoll wurde die Unterstützung für SHA256 und SHA512 hinzugefügt.
--with-password-argon2
verwendet nun pkg-config, um libargon2
zu erkennen. Aus diesem Grund sollte ein alternativer Speicherort für
libargon2 nun mittels PKG_CONFIG_PATH angegeben werden.
Die INI-Direktive log_errors_max_len wurde entfernt. Sie hatte seit PHP 8.0.0 keine Wirkung mehr.
Ein vorangestelltes Dollarzeichen in einer Zeichenkette mit
Anführungszeichen kann nun maskiert werden: "\${"
wird
nun als Zeichenkette mit dem Inhalt ${
interpretiert.
Backslashes in Zeichenketten mit doppelten Anführungszeichen werden nun
konsequenter als Maskierungs-Zeichen behandelt. Zuvor galt
"foo\"
gefolgt von etwas anderem als einem
Zeilenumbruch als unvollständige Zeichenkette. Jetzt wird sie als
Zeichenkette mit dem Inhalt foo\
interpretiert. Als
Ausnahme wird jedoch die Zeichenkette "foo\"
gefolgt
von einem Zeilenumbruch weiterhin als gültige Zeichenkette mit Inhalt
foo\
behandelt und nicht als unvollständige
Zeichenkette. Diese Ausnahme existiert, um die einfache Verwendungen von
Windows-Dateipfaden, z. B. "C:\foo\"
, zu unterstützen.