编程 PECL 2027 年转只读、2029 年关站:Dockerfile 里的 pecl install 和 mbstring 得改了

2026-11-10 21:01:44

PECL 2027 年只读、2029 年关站:构建脚本里的 pecl install 和 mbstring 怎么处理

James Titcumb 提交了一份新的 PHP RFC,为 PECL 设定退出时间表:pecl.php.net 在 2027 年年中转为只读,2029 年 12 月 31 日关闭;此后扩展通过 PIE 安装。PIE 被描述为稳定、由 PHP Foundation 维护。

这份 RFC 是 2025 年「Recommend PIE and deprecate PECL」RFC 的后续。2025 年那份只在消息层面弃用 PECL,网站和 CLI 工具照常运行,并要求再出一份带移除时间表的 RFC。新 RFC 用日历日期定节点,不跟 PHP 版本绑定。

时间表

两个硬节点是 2027-06-30 只读、2029-12-31 关站。brownout(短时中断演练)按原文月日列出:

日期事件
2027-01-04PECL 站点挂出横幅,公布只读日期,并给出扩展作者迁移到 PIE 的步骤
2027-06-30pecl.php.net 完全只读:无法登录,也无法上传新版本
09-033 小时 brownout
10-016 小时 brownout
11-0524 小时 brownout
12-033 天 brownout,持续到 12 月 6 日
2029-12-31PECL 网站关闭,PECL 工具与网站 git 仓库随后归档

brownout 的作用是让错过公告的人尽早暴露问题。RFC 同时要求项目在过渡期关注邮件列表和 GitHub issue,并在那里同步关站细节。把 PECL 从 php-src 中移除不在本 RFC 范围内,已由「End PEAR endorsement」RFC 处理。

扩展维护者要改什么

RFC 的影响部分列了两个日期:

  • 2027-06-30 起,不能再发布新的 PECL 版本。
  • 2029-12-31 起,PECL 无法安装任何尚未迁移到 PIE 的扩展。

只通过 PECL 分发扩展的维护者,需要在 2027 年年中之前准备好 PIE 包,才能继续发版。Packagist 的 extensions 页面列出了已经支持 PIE 的扩展;PIE 仓库目前承载文档,2027 年 1 月的横幅也会指向迁移步骤。

构建脚本会受什么影响

PECL 会停止工作,后续必须用 PIE。Dockerfile、CI 配置或 provisioning 脚本里如果执行 pecl install,关站后会失败,在此之前每个 brownout 窗口也会失败。

Docker 用户已经碰到了一部分变化:docker-library/php#1654 于 2026 年 6 月 25 日合并后,官方 PHP Docker 镜像从 PHP 8.6 起不再随镜像提供 PECL。同一改动也让 8.6 镜像不再预编译 mbstring,应用用到时需显式安装:

# PHP 8.6 官方镜像:mbstring 不再预编译
RUN docker-php-ext-install mbstring

旧的 PECL 安装写法大致如下,关站或 brownout 期间会中断:

# 旧:依赖官方镜像内置的 PECL
RUN pecl install some_ext && docker-php-ext-enable some_ext

讨论串里 Tim Düsterhus 指出,RFC 的时间线与 PHP 8.5 的 EOL 对齐,因此 PECL 关闭时不会还有受支持的 Docker 镜像依赖它。

检查清单

  • 在 Dockerfile、CI 配置、provisioning 脚本中搜索 pecl install:
grep -rn --include='Dockerfile*' --include='*.yml' --include='*.yaml' --include='*.sh' 'pecl install' .
  • 把上述安装步骤按 PIE 仓库文档改写,确认所用扩展有对应的 PIE 包。
  • 检查基础镜像版本:PHP 8.6 起官方镜像不再带 PECL。
  • 应用依赖 mbstring 的,在 8.6 镜像中补 docker-php-ext-install mbstring。
  • 只通过 PECL 发布的扩展,在 2027-06-30 前准备好 PIE 包,否则无法继续发版。
  • 在 09-03、10-01、11-05、12-03 的 brownout 窗口跑一遍构建与部署流程,确认失败点已被覆盖。
  • 关注 PECL 站点横幅、邮件列表与 GitHub issue 中的关站通知。

来源:https://phpnews.net/sunset-pecl-rfc

复制全文 生成海报 PHP PECL PIE Docker

推荐文章

程序员茄子在线接单