php 官方支持状态应查 php.net/supported-versions,看 version、active support、security support 三列:8.3 活跃支持,8.2 仅安全支持,8.1 及更早已 eol;升级需兼顾扩展兼容、语法变更与 composer 约束。

PHP 没有官方“版本控制图表”这种东西——你看到的大概率是第三方整理的 PHP 版本生命周期(EOL / security support)时间线,或是某个框架(如 Laravel、Symfony)对 PHP 版本的兼容矩阵。直接查 php.net/supported-versions 最权威。
怎么看 PHP 官方支持状态
PHP 官网维护着实时更新的版本支持表,核心看三列:Version、Active Support、Security Support。只要一列标为 Active 或 Security Only,就代表该版本还在被维护;标 EOL(End of Life)即彻底废弃,连安全补丁都不再发布。
-
8.3:当前 Active Support(新特性 + 安全修复) -
8.2:Security Support Only(仅关键安全修复,持续约 1 年) -
8.1及更早:已标EOL,不应在生产环境使用
为什么不能只看“最新版”就升级
升级 php 不只是改个 php --version 输出,它直接影响扩展兼容性、语法行为和错误报告级别。比如:
-
8.2引入了Deprecation级别警告(如动态属性访问),很多老项目会突然报满屏 warning -
8.3移除了mysql_connect()的兼容层(即使装了ext-mysqlnd也不行) - 某些扩展(如
imagick、grpc)可能还没发布适配8.3的稳定版
怎么查自己项目实际依赖的 PHP 特性
别靠人眼扫代码。用静态分析工具定位风险点:
立即学习“PHP免费学习笔记(深入)”;
- 运行
phpstan配合phpstan-phpunit和phpstan-deprecation-rules,能标出所有已被弃用的函数调用 - 用
php -l批量检查语法兼容性(但不捕获弃用提示) - 在
php.ini中临时开启error_reporting = E_ALL | E_DEPRECATED,再跑一遍测试套件,看哪些地方抛Deprecated
真正卡住升级的往往不是语法,而是某条 Composer 包的 "php": "^7.4" 硬约束,或者 CI 流水线里写死的 php:7.4-cli 镜像——这些比语言特性更难绕开。











