在没有 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\"。