Sonstige Änderungen
Änderungen in SAPI-Modulen
CLI
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.
PHPDBG
Die Fähigkeit, remote zu debuggen, wurde von phpdbg entfernt.
Geänderte Funktionen
Core
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.
Filter
Das Flag FILTER_FLAG_ALLOW_OCTAL
des Filters
FILTER_VALIDATE_INT
akzeptiert nun oktale
Zeichenketten mit vorangestelltem Oktalpräfix
("0o"
/"0O"
).
GMP
Alle GMP-Funktionen akzeptieren nun oktale
Zeichenketten mit vorangestelltem Oktalpräfix
("0o"
/"0O"
).
PDO ODBC
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.
Reflection
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.
Standard
syslog() ist nun binärsicher.
Sonstige Änderungen bei Erweiterungen
GD
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.
MySQLi
Wenn PHP gegen die Bibliothek libmysqlclient gelinkt wird, sind nun die Funktionen mysqli_stmt::next_result() und mysqli::fetch_all() verfügbar.
OpenSSL
-
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.
Phar
-
Für Signaturen wird nun standardmäßig SHA256 verwendet.
-
Die Unterstützung für OpenSSL_SHA256- und OpenSSL_SHA512-Signaturen wurde hinzugefügt.
SNMP
-
Für das Sicherheitsprotokoll wurde die Unterstützung für SHA256 und SHA512 hinzugefügt.
Standard
--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.
Änderungen bei der Handhabung von INI-Dateien
-
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 Inhaltfoo\
interpretiert. Als Ausnahme wird jedoch die Zeichenkette"foo\"
gefolgt von einem Zeilenumbruch weiterhin als gültige Zeichenkette mit Inhaltfoo\
behandelt und nicht als unvollständige Zeichenkette. Diese Ausnahme existiert, um die einfache Verwendungen von Windows-Dateipfaden, z. B."C:\foo\"
, zu unterstützen.