PHP 8.6.0 RC7 预发布 tag 与 Windows QA 构建出现(正式公告待发)

雨晨酱_4181

雨晨酱_4181

2026-11-12

795人浏览

原创

2026-11-11t23:26:48z,github php/php-src 的 releases atom feed 新增条目 php-8.6.0rc7,条目正文只有一行「tag for php-8.6.0rc7」。这距 rc5 的 tag(11-05)过去六天,距 rc6 的 tag(11-10 18:15z)还不到一天。仓库的 git/refs/tags/php-8.6.0rc7 返回一个带 pgp 签名的附注 tag 对象,tagger 为 8.6 新任发布管理员(rookie rm)joe ferguson ,github 校验状态为 verified。与以往每个 rc 一样,tag 先行落地,php.net 的正式公告尚未发出——截至本文核验时,php.net 首页横幅与新闻 atom feed 的最新测试版条目仍是 11-05 的「php 8.6.0 rc5 available for testing」,预发布构建页的 source builds 区也仍列着 php 8.6.0rc5(05 nov 2026),但 windows builds 区已经先行列出了 8.6.0rc7 的全套 qa 构建,构建日期标注 12 nov 2026。

php-8.6.0RC7 发布页

▲ php-8.6.0RC7 发布页

计划表只排到 RC5,RC6/RC7 是计划允许的补排

wiki.php.net 的 PHP 8.6 Preparation Tasks 页给出的时间表到 RC5 就直接跳到 11-19 GA,并没有预排 RC6 及之后的候选版本。不过同一页写得很清楚:「Individual releases may be added or removed to accommodate development progress」,并且沿用「Tag on Tuesday, release on Thursday」的节奏——RC6 正是在周二(11-10)打的 tag,RC7 的补排属于计划明确允许的动作。此外,对照 GitHub Releases REST API 可以确认:仓库 15 条正式 release 的最新一批仍是 2026-10-21(8.5.15/8.4.27/8.3.29/8.2.30 安全修复批次),RC7 在 GitHub 上只是一个 tag 条目加自动生成的源码包,不是正式 release。时间表中的 11-19 GA 是计划日期而非已发生的事实,本条信息不能外推出 GA 推迟或提前的结论。

wiki.php.net 8.6 发布计划页

▲ wiki.php.net 8.6 发布计划页

RC6 到 RC7:又 cherry-pick 了两个修复

用官方 compare 接口对比 php-8.6.0RC6 与 php-8.6.0RC7 两个 tag,中间只有 5 个提交:分支版本号回归 dev、一条 NEWS 更新,以及两个实质修复——都是为 GA 质量收尾而 cherry-pick 进分支的。从 RC5 到 RC7 的更大范围看,这段时间合入的还有 fileinfo 的 TrueType 字体 MIME 识别恢复(GH-25051)与 HWPX 误判 OOXML 的修复(GH-25105)、默认流上下文在 stream 错误码路径上的释放后使用(#25321)、timelib 升级到 2026.03,以及为保证补丁分支 ABI 兼容而做的 globals 填充与 API 版本号递增。

第一个修复针对 ext/openssl:共享 SSL_CTX 的回调读取已释放的 session stream。提交 33e562e140 的说明写明:自 b1242c32bca 起,由 session stream 派生的服务端流共享父流的 SSL_CTX,而 ALPN 选择回调与 Windows 无 CA 文件时的证书校验回调都以父流指针注册为参数——父流若在子流握手完成前被关闭,这两个回调就会读到已释放内存,子流还会静默协商不出 ALPN 协议。修复改为像 verify_callback 与 SNI 回调那样从 SSL ex_data 反查握手自己的流,并给子流复制一份 ALPN 协议列表:

ext/openssl/xp_ssl.c
@@ -785,7 +785,8 @@ static int php_openssl_win_cert_verify_callback(X509_STORE_CTX *x509_store_ctx,
 	bool is_self_signed = false;
 
 
-	stream = (php_stream*)arg;
+	SSL *ssl = X509_STORE_CTX_get_ex_data(x509_store_ctx, SSL_get_ex_data_X509_STORE_CTX_idx());
+	stream = (php_stream*)SSL_get_ex_data(ssl, php_openssl_get_ssl_stream_data_index());
 	sslsock = (php_openssl_netstream_data_t*)stream->abstract;
@@ -1649,7 +1650,10 @@ static int php_openssl_server_alpn_callback(SSL *ssl_handle,
 		const unsigned char **out, unsigned char *outlen,
 		const unsigned char *in, unsigned int inlen, void *arg) /* {{{ */
 {
-	php_openssl_netstream_data_t *sslsock = arg;
+	php_stream *stream = (php_stream *)SSL_get_ex_data(ssl_handle, php_openssl_get_ssl_stream_data_index());
+	php_openssl_netstream_data_t *sslsock = (php_openssl_netstream_data_t *)stream->abstract;
+
+	ZEND_ASSERT(sslsock->alpn_ctx.data != NULL);
@@ -2800,6 +2804,16 @@ static zend_result php_openssl_setup_crypto(php_stream *stream,
 		} else {
 			SSL_CTX_up_ref(parent_sslsock->ctx);
 			sslsock->ctx = parent_sslsock->ctx;
+#ifdef HAVE_TLS_ALPN
+			if (parent_sslsock->alpn_ctx.data) {
+				if (sslsock->alpn_ctx.data) {
+					pefree(sslsock->alpn_ctx.data, php_stream_is_persistent(stream));
+				}
+				sslsock->alpn_ctx.data = (unsigned char *) pestrndup((const char *) parent_sslsock->alpn_ctx.data,
+					parent_sslsock->alpn_ctx.len, php_stream_is_persistent(stream));
+				sslsock->alpn_ctx.len = parent_sslsock->alpn_ctx.len;
+			}
+#endif

▲ 补丁片段摘自上述提交

第二个修复在 Zend 编译器:array_map() 展开优化不解析 first-class callable(FCC)的函数名(提交 9a482311c0,cherry-pick 自 master 的 365d450ba)。旧逻辑把回调的函数名当普通表达式先编译求值,得到的是未经命名空间解析的字符串常量,绕过了 use function 导入与运行时的全局函数回退;修复对「字面量函数名」这一情形改回按普通调用编译,不做缓存展开:

Zend/zend_compile.c
@@ -5399,9 +5399,19 @@ static zend_result zend_compile_func_array_map(znode *result, zend_ast_list *arg
 
 	/* Evaluate function name */
 	znode func_node;
-	{
+	zend_ast *func_name_ast = callback->child[callback->kind == ZEND_AST_CALL ? 0 : 1];
+	if (callback->kind == ZEND_AST_CALL
+	 && func_name_ast->kind == ZEND_AST_ZVAL
+	 && Z_TYPE_P(zend_ast_get_zval(func_name_ast)) == IS_STRING) {
+		/* A literal function name has no side effects and must not be memoized:
+		 * compiling it as an expression would yield the unresolved string, which
+		 * ignores the current namespace, "use function" imports and the runtime
+		 * fallback to the global function. Compile the call in the loop body with
+		 * the original name instead, like a regular call. */
+		func_node.op_type = IS_UNUSED;
+	} else {
 		znode result;
-		zend_compile_expr(&result, callback->child[callback->kind == ZEND_AST_CALL ? 0 : 1]);
+		zend_compile_expr(&result, func_name_ast);

▲ 补丁片段摘自上述提交

php-src 修复提交

▲ php-src 修复提交

Windows QA 构建已就位,仅用于兼容性预检

php.net 预发布构建页的 Windows Builds 区本次为 8.6.0RC7 列出的构建全部标注 12 Nov 2026 并附 sha256:源码包(34.59MB)、测试包 phpt(19.53MB)、VS18 x64/x86 的 Thread Safe 与 Non Thread Safe Zip(33.18–37.89MB)、各自的 Debug Pack(51.58–54.08MB)与扩展开发 SDK 包(1.71MB)。页面右侧「Test Releases」一栏的措辞没有变:这些构建不是给生产环境运行的,只用于测试,遇到问题应到 GitHub Issues 报告。值得注意的是该页的 QA Releases API(pre-release-builds.php?format=json)也可以程序化拉取这份清单,便于 CI 跟踪后续 RC 与 GA。

php.net 预发布构建页

▲ php.net 预发布构建页

对使用者的实际含义是:8.6 正式版临近(计划 GA 为 11-19,属计划日期),现在是用 RC 源码做兼容性预检的窗口——用 RC 源码包在 CI 里编译自有扩展、跑测试套件验证回归、核对 API/ABI 版本变化,都应在这个阶段完成,而 RC 本身不要部署到生产。等 php.net 发布 RC7 正式新闻后,可以回到新闻归档页核对发布说明;若关注 GA 进度,观察点是 RC7 之后的正式公告与 wiki 时间表的对应关系,而不是把 RC 的补排解读为延期信号。

关键信息

项目 内容
类目 版本更新
级别 中
日期 tag 2026-11-11T23:26:48Z;Windows 构建标注 12 Nov 2026
关联编号 PHP 8.6.0 RC7 / tag php-8.6.0RC7
tag 对象 附注 tag,PGP 签名(GitHub Verified),tagger Joe Ferguson ,指向提交 b63cd83da3
RC6→RC7 修复 ext/openssl 共享 SSL_CTX 回调读已释放 session stream(33e562e140,GH-25211);array_map() 优化不解析 FCC 函数名(9a482311c0)
影响范围 8.6 预发布测试构建;不可用于生产
公告状态 php.net 新闻/首页/Source Builds 区仍为 RC5(11-05);正式公告待发
GA 计划 wiki.php.net 时间表标注 2026-11-19(计划日期,非已发生)
核验状态 双源交叉核实(GitHub php/php-src / php.net 预发布构建页)

来源:https://github.com/php/php-src/releases/tag/php-8.6.0RC7

Windows 开机自启并隐藏到系统托盘
Windows 开机自启并隐藏到系统托盘

让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。

下载

来源:https://www.php.net/pre-release-builds.php

来源:https://wiki.php.net/todo/php86

来源:https://github.com/php/php-src/commit/33e562e1404cd1d141931e44bb15d14a9e9b2eba

来源:https://github.com/php/php-src/commit/9a482311c094861fd7dffee26bab6e0e4c55fe2b

来源:https://github.com/php/php-src/compare/php-8.6.0RC6...php-8.6.0RC7

来源:https://www.php.net/feed.atom

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

12704

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

7301

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2255

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4608

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

5314

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

4191

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

6057

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4762

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12522

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
《20天入门精通PHP》视频教程
《20天入门精通PHP》视频教程

共200课时 | 49.5万人学习

墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习