其他变更

SAPI 模块中的变更

CLI

在没有 readline 扩展 的情况下使用 -a 现在会导致错误。之前,在没有 readline 的情况下使用 -a 与不带任何参数调用 php 的行为相同,除了打印一条额外的 "Interactive mode enabled" 消息。此模式不是交互式的。

PHPDBG

已从 phpdbg 中删除远程功能。

已更改的函数

核心

foreachvar_dump()serialize()、对象比较等中使用的属性顺序已更改。现在属性按照它们的声明和继承自然排序。在基类中声明的属性将位于子属性之前。

此顺序与 zend_object 结构中属性的内部布局一致,并重复了 default_properties_table[]properties_info_table[] 中的顺序。旧的顺序没有记录,并且是由类继承实现细节引起的。

过滤器

FILTER_FLAG_ALLOW_OCTAL 标志的 FILTER_VALIDATE_INT 过滤器现在接受带有前导八进制前缀 ("0o"/"0O") 的八进制字符串。

GMP

现在所有 GMP 函数都接受带有前导八进制前缀 ("0o"/"0O") 的八进制字符串。

PDO ODBC

使用 PDO::ATTR_SERVER_INFOPDO::ATTR_SERVER_VERSIONPDO::getAttribute() 现在返回值,而不是抛出 PDOException

反射

ReflectionProperty::setAccessible()ReflectionMethod::setAccessible() 现在不再起作用。现在属性和方法始终被认为可以通过反射访问。

标准

syslog() 现在是二进制安全的。

扩展的其他变更

GD

imagewebp() 现在可以通过将 IMG_WEBP_LOSSLESS 作为质量来进行无损 WebP 编码。

此常量仅在使用的 libgd 支持无损 WebP 编码时定义。

MySQLi

当链接到 libmysqlclient 时,mysqli_stmt::next_result()mysqli::fetch_all() 现在可用。

OpenSSL

  • OpenSSL 扩展 现在至少需要 OpenSSL 版本 1.0.2。

  • 现在支持 OpenSSL 3.0。请注意,许多密码现在不再默认启用(作为旧版提供程序的一部分),并且参数验证(例如最小密钥大小)现在更加严格。

Phar

  • 现在默认使用 SHA256 用于签名。

  • 添加了对 OpenSSL_SHA256 和 OpenSSL_SHA512 签名的支持。

SNMP

  • 添加了对 SHA256 和 SHA512 的安全协议支持。

标准

--with-password-argon2 现在使用 pkg-config 来检测 libargon2。因此,现在应该使用 PKG_CONFIG_PATH 指定替代的 libargon2 位置。

INI 文件处理的变更

  • 已删除 log_errors_max_len INI 指令。它在 PHP 8.0.0 之后不再起作用。

  • 现在可以在带引号的字符串中转义开头的美元符号:"\${" 现在将被解释为内容为 ${ 的字符串。

  • 现在在双引号字符串中反斜杠更一致地被视为转义字符。之前,"foo\\" 后面跟着除换行符以外的其他内容,不被视为已终止的字符串。现在它被解释为内容为 foo\ 的字符串。但是,作为例外,字符串 "foo\" 后面跟着换行符将继续被视为内容为 foo\ 的有效字符串,而不是未终止的字符串。此例外存在是为了支持对 Windows 文件路径的简单使用,例如 "C:\foo\"

添加备注

用户贡献的备注

此页面没有用户贡献的备注。
To Top