PHP 8.4.0 RC4 available for testing

其它变更

PHP 核心

Set(raw)cookie 函数接受 $option 数组参数

setcookie()setrawcookie() 现在还支持以下签名:

setcookie(string $name, string $value = "", array $options = []): bool
$options 是关联数组,可以存在以下任意 key "expires""path""domain""secure""httponly""samesite"

新的 Syslog ini 配置

如果 error_log 设置为 syslog,则新增以下 ini 指令来自定义日志记录:

syslog.facility
指定记录消息的程序类型。
syslog.filter
指定过滤纪录消息的过滤器类型,支持的过滤器类型——allno-ctrlascii。自 PHP 7.3.8 起,raw 也可以使用,恢复了 syslog 在之前 PHP 版本中的行为方式。此过滤器还会影响 syslog() 的调用,
syslog.ident
指定在每条消息前面添加的标识符(ident)字符串。

垃圾回收机制

循环 GC 已增强,这可能会带来相当大的性能改进。

其它

var_export() 现在导出 stdClass 为数组转换为对象((object) array( ... )),而不是使用不存在的方法 stdClass::__setState()

debug_zval_dump() 已变更为跟 var_dump() 一样的方式显示递归数组和对象。现在,不会重复展示两次了。

array_push()array_unshift() 现在也可以使用单个参数调用,这对于展开运算符来说尤其方便。

交互式 PHP 调试程序

已移除未使用的常量 PHPDBG_FILEPHPDBG_METHODPHPDBG_LINENOPHPDBG_FUNC

FastCGI 进程管理器

getallheaders() 函数现已可用。

客户端 URL 库

现在需要 libcurl ≥ 7.15.5。

数据过滤

FILTER_VALIDATE_FLOAT 现在还支持 thousand 选项,该选项定义允许的千位分隔符集合。默认值("',.")与以前的 PHP 版本完全向后兼容。

FILTER_SANITIZE_ADD_SLASHES 已添加为 magic_quotes 过滤器(FILTER_SANITIZE_MAGIC_QUOTES)的别名。 magic_quotes 过滤器可能会在未来的 PHP 版本中移除。

FTP

默认传输模式已更改为 binary

国际化相关函数

当 PHP 链接到 ICU ≥ 56 时,Normalizer::NONE 已弃用。

引入了 Normalizer::FORM_KC_CF 作为 NFKC_Casefold 标准化的 Normalizer::normalize() 参数;当与 ICU ≥ 56 链接时可用。

JavaScript 对象表示法

添加了新 JSON_THROW_ON_ERROR flag,可以与 json_decode()json_encode() 一起使用,并导致这些函数在发生错误时抛出新的 JsonException,而不是使用 json_last_error()json_last_error_msg() 检索全局错误状态。JSON_PARTIAL_OUTPUT_ON_ERROR 优先于 JSON_THROW_ON_ERROR

多字节字符串

配置项 --with-libmbfl 不再可用。

ODBC (Unified)

已移除对 ODBCRouterBirdstep 的支持(包括 birdstep.max_links ini 指令)。

OPcache

opcache.inherited_hack ini 指令已移除。自 PHP 5.3.0 起,已忽略该值。

OpenSSL

添加了 min_proto_versionmax_proto_version ssl stream 选项以及可能的 TLS 协议值的相关常量。

正则表达式(Perl 兼容)

PCRE 扩展已升级到 PCRE2,这可能会导致出现细微的行为变化(例如,现在对类中的字符范围进行更严格的解释),并增强了现有的正则表达式语法。

preg_quote() 现在也转义 '#' 字符。

Microsoft SQL Server 和 Sybase 函数(PDO_DBLIB)

添加了属性 PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS 以启用自动跳过 rowset。

添加了公开 TDS 版本的 PDO::DBLIB_ATTR_TDS_VERSION 属性。

DATETIME2 列现在被视为 DATETIME 列。

SQLite 函数(PDO_SQLITE)

现在可以通过将新的 PDO::SQLITE_ATTR_OPEN_FLAGS 属性设置 PDO::SQLITE_OPEN_READONLY 以只读模式打开 SQLite3 数据库。

Session 处理

session_set_cookie_params() 现在还支持以下签名:

其中 $options 是关联数组,可以存在以下任意 key "lifetime""path""domain""secure""httponly""samesite"。因此,session_get_cookie_params() 的返回值现在也有带有 "samesite" key 的元素。此外,还添加了新的 session.cookie_samesite ini 选项来设置 cookie 的 SameSite 指令的默认值。默认为 ""(空字符串),因此未设置 SameSite 指令。可以设置为 "Lax""Strict",这会设置相应的 SameSite 指令。

Tidy

现在也透明地支持针对 » tidyp 进行编译。由于 tidyp 没有提供 API 来获取发布日期,因此 tidy_get_release()tidy::getRelease() 在这种情况下返回 'unknown'

XML 解析器

如果扩展是针对 libxml 编译,则不再忽略 xml_set_external_entity_ref_handler() 回调的返回值。以前,会忽略返回值,并且不会停止解析。

Zip

不建议针对捆绑的 libzip 进行编译,但通过在配置中添加 --without-libzip 仍然可以实现。

Zlib 压缩

compress.zlib 包装器添加了 zlib/level 上下文选项,以方便设置所需的压缩级别。

添加备注

用户贡献的备注

此页面尚无用户贡献的备注。
To Top