Other Changes
Changes in SAPI Modules
CLI
Using -a without the readline extension will now result in an error.
Previously, -a without readline had the same behavior as
calling php without any arguments, apart from printing an additional
"Interactive mode enabled"
message.
This mode was not interactive.
PHPDBG
Remote functionality from phpdbg has been removed.
Changed Functions
Core
The order of properties used in foreach, var_dump(), serialize(), object comparison, etc. was changed. Properties are now ordered naturally according to their declaration and inheritance. Properties declared in a base class are going to be before the child properties.
This order is consistent with internal layout of properties in
zend_object
structure and repeats the order in
default_properties_table[]
and properties_info_table[]
.
The old order was not documented and was caused by class inheritance implementation details.
Filter
The FILTER_FLAG_ALLOW_OCTAL
flag of the
FILTER_VALIDATE_INT
filter
now accept octal string with the leading octal prefix
("0o"
/"0O"
).
GMP
All GMP functions now accept octal string with the leading octal prefix
("0o"
/"0O"
).
PDO ODBC
PDO::getAttribute() with
PDO::ATTR_SERVER_INFO
and
PDO::ATTR_SERVER_VERSION
now return values instead of throwing PDOException.
Reflection
ReflectionProperty::setAccessible() and ReflectionMethod::setAccessible() no longer have an effect. Properties and methods are now always considered accessible via Reflection.
Standard
syslog() is now binary safe.
Other Changes to Extensions
GD
imagewebp() can now do lossless WebP encoding
by passing IMG_WEBP_LOSSLESS
as the quality.
This constant is only defined, if the used libgd supports lossless WebP encoding.
MySQLi
mysqli_stmt::next_result() and mysqli::fetch_all() are now available when linking against libmysqlclient.
OpenSSL
-
The OpenSSL extension now requires at least OpenSSL version 1.0.2.
-
OpenSSL 3.0 is now supported. Be aware that many ciphers are no longer enabled by default (part of the legacy provider), and that parameter validation (e.g. minimum key sizes) is stricter now.
Phar
-
SHA256 is now used by default for signatures.
-
Added support for OpenSSL_SHA256 and OpenSSL_SHA512 signatures.
SNMP
-
Added support for SHA256 and SHA512 for the security protocol.
Standard
--with-password-argon2
now uses pkg-config to detect libargon2.
As such, an alternative libargon2 location should now be specified using
PKG_CONFIG_PATH.
Changes to INI File Handling
-
The log_errors_max_len INI directive has been removed. It no longer had an effect since PHP 8.0.0.
-
A leading dollar in a quoted string can now be escaped:
"\${"
will now be interpreted as a string with contents${
. -
Backslashes in double quoted strings are now more consistently treated as escape characters. Previously,
"foo\\"
followed by something other than a newline was not considered as a terminated string. It is now interpreted as a string with contentsfoo\
. However, as an exception, the string"foo\"
followed by a newline will continue to be treated as a valid string with contentsfoo\
rather than an unterminated string. This exception exists to support naive uses of Windows file paths such as"C:\foo\"
.