直接装 topthink/think 默认拉取 tp6,因 tp5.1 稳定版已归档至 topthink/framework 包,topthink/think 仅是骨架且默认指向最新版;正确方式是先 create-project 初始化骨架,再 require topthink/framework:^5.1。

直接装 topthink/think 默认拉的是 TP6,不是 TP5 稳定版。必须显式指定框架包和版本号,否则项目初始化就错位。
为什么 composer create-project topthink/think 装不到 TP5 稳定版
TP5.1.x 的稳定代码已归档进 topthink/framework 包,而 topthink/think 是一个“骨架项目”,它本身不带框架实现,只负责提供目录结构和入口。官方在 5.1 版本后停止维护 topthink/think 的 5.x 分支,所以不加约束时,Composer 会默认拉取 topthink/think 的最新版(即 TP6+),导致你看到的 vendor/topthink/framework 是 ^6.0。
-
topthink/think=5.0.*已失效,该分支早已归档且不再更新 -
dev-master或5.1.x-dev不是稳定版,可能含未修复 bug 或接口变动 - 国内镜像若缓存过久,可能返回错误的包元数据,建议临时切回官方源验证
正确安装 TP5 稳定版(以 5.1.40 为例)的三步命令
以下命令适用于 PHP 7.1+、Composer 2.x,无需额外配置即可落地:
- 运行
composer create-project topthink/think tp5 --prefer-dist -n初始化骨架(此时 vendor 里还没 framework) - 进入项目目录后,执行
composer require topthink/framework:^5.1 --update-with-dependencies—— 这一步才真正装入 TP5 稳定内核 - 检查
composer.json中"topthink/framework"的版本是否为"^5.1";若看到"^6.0",立刻删掉vendor和composer.lock,重跑上一条命令
装完怎么验证是不是真 TP5 稳定版
别只看欢迎页,关键看底层行为是否符合 TP5.1 特征:
- 运行
php think version,输出应类似v5.1.40(不是v6.x) - 查看
public/index.php,确认define('APP_PATH', __DIR__ . '/../app/');—— TP5.1 用/app/,TP6 改成/application/ - 执行
php think route:list能正常列出路由;若报Command "route:list" is not defined,说明think-console未加载或版本错配 - 访问
/index.php/hello时,若 Apache/Nginx 未配置重写,TP5.1 仍能响应(靠 PATH_INFO 解析),TP6 则大概率 404
最易被忽略的一点:TP5.1 的自动加载逻辑依赖于 thinkphp/library/think/Loader.php 中对 app/ 目录的硬编码路径,一旦你手动改了应用目录名又没同步更新 Loader 或 base.php,后续所有类加载都会静默失败——这种问题不会报错,只会让控制器找不到、模型实例化为空,排查起来非常隐蔽。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











