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