thinkphp 当前仅 8.x 版本受官方主动维护;5.0/5.1 已 eol,6.0 将于 2024 年底终止维护。确认方式:查 composer.json 中版本约束及 github security.md,执行 composer show topthink/think 和 composer outdated 验证。

ThinkPHP 官方已停止对 5.0、5.1、6.0 的主动维护,仅 8.x 是当前唯一受支持的主线版本;查看方式不是翻文档,而是查 composer.json 中的 "support" 字段或直接访问官方 GitHub 仓库的 SECURITY.md。
怎么快速确认当前项目用的 TP 版本是否还在维护
别去搜“ThinkPHP 各版本生命周期表”——那类汇总页面往往过时。最准的方式是看项目根目录下的 composer.json 文件里 "thinkphp/framework"(或 "topthink/think")的版本约束,再比对官方仓库的维护声明:
- 若版本号是
^5.0或^5.1:已 EOL(End-of-Life),2023 年起不再修复任何安全漏洞 - 若版本号是
^6.0:2024 年底终止维护,目前仅接受严重漏洞的临时 patch,不新增功能 - 若版本号是
^8.0:当前主力版本,所有安全更新、新特性、扩展适配均只投向此分支
顺手执行 composer show topthink/think,输出里的 versions 行能直接看到当前安装的精确版本(如 v8.0.12),再对照 GitHub Releases 页面 看该 tag 是否标记为 Latest release 或 Security fix。
为什么 php think version 不能反映真实维护状态
这个命令只输出当前加载的框架版本字符串,比如 ThinkPHP v6.0.9,但它完全不告诉你这个版本是否已被弃用。更麻烦的是,TP6 的部分低版本(如 6.0.0 ~ 6.0.7)存在已知未修复的反序列化风险,但 php think version 依然会安静地返回数字——它不联网校验、不查 CVE、不读取仓库状态。
- 真正有用的判断依据是:
composer outdated topthink/think—— 如果返回 “No packages found”,说明你装的是最新稳定版;如果提示有更新但卡在6.0.x,那大概率是整个大版本线已冻结 - TP5 项目跑
php think version显示v5.1.41,看起来很新,但其实 5.1 分支早在 2022 年就关闭了 issue 提交入口
升级前必须核对的三个兼容性断点
从 TP6 升到 TP8 不是改个 composer 版本号就能跑通的事,中间有三处硬性断裂点:
-
config/app.php里的'default_return_type'在 TP8 中已被移除,响应格式现在由中间件或控制器 return 值自动推导,硬留着会触发InvalidArgumentException - TP6 的
validate()方法默认返回bool,而 TP8 改为始终返回ValidateResult对象,直接if (validate(...))会逻辑翻转 - 所有基于
think\facade\Cache的调用,在 TP8 中必须显式指定驱动名(如Cache::store('redis')->get(...)),否则走默认 file 驱动且不报错,容易误判缓存命中
这些都不是文档里加粗提醒的“Breaking Change”,而是运行时静默失效或行为偏移,必须逐行扫业务代码里的 facade 调用点。
维护状态背后的真实信号:看 GitHub 上谁在提交
打开 TP8.0 分支的 commit 记录,最近 30 天内如果有超过 10 次合并进 8.0 的 PR,且作者包含 liu21st 或 yunwuxin,说明仍在活跃维护;而 TP6 的 6.0 分支最近一次有效 commit 是 2024-09-17,之后全是 Dependabot 自动更新依赖,这就是终止维护的明确信号。
别信“长期支持”的说法——ThinkPHP 的 LTS 其实只体现在 Composer 的版本锁机制上,实际安全兜底全靠开发者自己盯仓库动态。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











