群里有人问 php9 在哪下,说官网找不到。另一个人发了个网盘链接,压缩包名叫 php9-green.zip,解压后是个 exe。官方下载页的包都带版本号和编译器标识,不会用这种命名,看到就该停手。
现在的版本节奏
截至 2026 年 10 月,php.net 下载页的稳定版是 8.5,8.4 还在安全维护,8.2 年底结束支持。9.0 出现在多个 RFC 的目标版本里,还没有正式发布。8.6 已经特性冻结,属于过渡版本。想用新语法,先看 RFC 状态,别看博客标题。
为什么有人抢跑 php9
搜索量就是生意。挂个 php9 的名字,放个改过的解释器,里面加个扩展或者后门,开发者根本看不出来。服务器上跑的 PHP 一旦被动过,所有站点密码都可能泄露。
升级该做的准备
先把项目跑在 8.5 上,打开 E_ALL,把弃用警告清干净。用 PHPStan 或 Rector 扫一遍,动态属性、${} 插值这类写法在 9.0 里会被移除。依赖的扩展要确认有对应版本,尤其是自己编译的。CI 里加一个多版本矩阵,别等正式版出来才发现跑不起来。
下载只认一个地方
php.net 的 downloads 页,Windows 版认 windows.php.net。校验 SHA256,核对发布公告里的版本号。公司内网需要离线包,让运维从官方源同步,别在论坛找。
9.0 会动哪些老写法
RFC 里明确要处理的包括 ${} 字符串插值、未定义属性提升为错误、资源类型转对象。这些在 8.x 里只是弃用警告,很多人把警告关了,等到 9.0 才集中爆。现在把 error_reporting 打开,让警告进日志。
还有一类是扩展,mysql 老扩展早就没了,imap、pspell 这类也在讨论移除。项目里用到的扩展先去 pecl 和官方文档确认生命周期。
版本号越新越要慢一步,PHP 这种基础设施,稳比快值钱。