最直接有效的方式是运行php think version,它调用\think\facade\App::version()读取运行时实际加载的框架版本,不依赖composer.lock、配置文件或缓存,结果最贴近真实环境。

最直接有效的方式是运行 php think version,它返回的是当前项目实际加载并运行的 ThinkPHP 版本,不依赖配置文件或缓存,结果最贴近真实环境。
用命令行快速查(推荐首选)
进入项目根目录(即包含 think 文件的那一层),执行:
-
php think version—— ThinkPHP 6+ 专用,输出如v6.1.4;若提示Could not open input file: think,请确认是否在正确目录、think文件存在且有执行权限(Linux/macOS 可用ls -l think检查) -
composer show topthink/framework—— 查看 Composer 实际安装的包版本,输出中versions行带*的即为当前版本,例如:* 6.1.4或* dev-develop#abc1234;若提示Package not found,说明vendor/topthink/framework未安装,需先运行composer install
在代码中动态获取
适合调试时验证运行时版本,尤其当项目存在多套框架副本时更准确:
- 在控制器或中间件中加入:
echo \think\facade\App::version();(ThinkPHP 6+);注意需先use think\facade\App; - ThinkPHP 5.1+ 也可用该方法;5.0 中使用
THINK_VERSION常量,但 6.x 已废弃,硬引用会报错 - 避免在非 CLI 环境下直接
echo,建议改用var_dump()或写入日志,防止触发headers already sent
离线或无执行权限时手动查源码
当服务器禁用 PHP 执行、Composer 不可用,或仅有 FTP 权限时适用:
- 打开
vendor/topthink/framework/src/thinkphp/App.php(TP6 路径)或thinkphp/base.php(TP5) - 搜索
const VERSION或查看文件顶部注释中的@version标签 - 注意别误看
thinkphp/library/think/App.php(这是门面类,不含版本定义) - 若看到类似
'6.0.0-beta'的带后缀版本,说明不是稳定版,生产环境应避免使用
别踩这些坑
以下方式容易误导,不建议单独依赖:
-
composer.json里写的"topthink/framework": "^6.0"只是版本范围,不是实际安装版本 -
composer info是旧命令,新版 Composer 已弃用,行为不稳定 - 误用包名,如
topthink/think(TP5 包名)或大小写错误(必须全小写) - 仅靠源码文件头注释判断,但该常量可能未随更新同步修改
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











