在没有 readline 扩展 的情况下使用 -a 现在会导致错误。之前,在没有 readline 的情况下使用 -a 与不带任何参数调用 php 的行为相同,除了打印一条额外的 "Interactive mode enabled"
消息。此模式不是交互式的。
已从 phpdbg 中删除远程功能。
在 foreach、var_dump()、serialize()、对象比较等中使用的属性顺序已更改。现在属性按照它们的声明和继承自然排序。在基类中声明的属性将位于子属性之前。
此顺序与 zend_object
结构中属性的内部布局一致,并重复了 default_properties_table[]
和 properties_info_table[]
中的顺序。旧的顺序没有记录,并且是由类继承实现细节引起的。
FILTER_FLAG_ALLOW_OCTAL
标志的 FILTER_VALIDATE_INT
过滤器现在接受带有前导八进制前缀 ("0o"
/"0O"
) 的八进制字符串。
现在所有 GMP 函数都接受带有前导八进制前缀 ("0o"
/"0O"
) 的八进制字符串。
使用 PDO::ATTR_SERVER_INFO
和 PDO::ATTR_SERVER_VERSION
的 PDO::getAttribute() 现在返回值,而不是抛出 PDOException。
ReflectionProperty::setAccessible() 和 ReflectionMethod::setAccessible() 现在不再起作用。现在属性和方法始终被认为可以通过反射访问。
syslog() 现在是二进制安全的。
当链接到 libmysqlclient 时,mysqli_stmt::next_result() 和 mysqli::fetch_all() 现在可用。
OpenSSL 扩展 现在至少需要 OpenSSL 版本 1.0.2。
现在支持 OpenSSL 3.0。请注意,许多密码现在不再默认启用(作为旧版提供程序的一部分),并且参数验证(例如最小密钥大小)现在更加严格。
现在默认使用 SHA256 用于签名。
添加了对 OpenSSL_SHA256 和 OpenSSL_SHA512 签名的支持。
添加了对 SHA256 和 SHA512 的安全协议支持。
--with-password-argon2
现在使用 pkg-config 来检测 libargon2。因此,现在应该使用 PKG_CONFIG_PATH 指定替代的 libargon2 位置。
已删除 log_errors_max_len INI 指令。它在 PHP 8.0.0 之后不再起作用。
现在可以在带引号的字符串中转义开头的美元符号:"\${"
现在将被解释为内容为 ${
的字符串。
现在在双引号字符串中反斜杠更一致地被视为转义字符。之前,"foo\\"
后面跟着除换行符以外的其他内容,不被视为已终止的字符串。现在它被解释为内容为 foo\
的字符串。但是,作为例外,字符串 "foo\"
后面跟着换行符将继续被视为内容为 foo\
的有效字符串,而不是未终止的字符串。此例外存在是为了支持对 Windows 文件路径的简单使用,例如 "C:\foo\"
。