composer create-project topthink/think 默认安装 TP6 是因为该骨架自 5.1.39 后已切换至 "topthink/framework": "^6.0",需显式指定 topthink/think=5.1.39 并锁定 framework:^5.1.40 才能正确安装 TP5.1。

ThinkPHP5 没有官方定义的“开发版”这个独立发行形态,所谓“开发版”实际是指 topthink/framework 的 5.1.x 系列稳定分支(如 ^5.1.40),配合 topthink/think 项目骨架使用。直接运行 composer create-project topthink/think 默认拉取的是 TP6,不是 TP5。
为什么 composer create-project topthink/think 装出来不是 TP5?
因为 topthink/think 自 TP5.1.39 之后已转向 TP6 主线,其 composer.json 中的 require 项默认指向 "topthink/framework": "^6.0"。你看到的“TP5 项目目录”很可能是空壳,vendor/topthink/framework 实际是 TP6 代码,导致 php think run 报错、路由不生效、app/ 目录结构异常等。
- 执行
cat composer.json | grep framework(Linux/macOS)或findstr framework composer.json(Windows)确认实际版本 - 若看到
"^6.0"或"dev-master",说明装错了 - 不要手动改
composer.json再composer update——TP6 和 TP5 的自动加载规则、模块路径、配置键名均不兼容
composer create-project 正确安装 TP5.1 的命令
必须显式指定旧版骨架 + 锁定框架版本。推荐以下两步法(实测适用于 PHP 7.2+、Composer 2.2+):
- 第一步:用历史可用的 TP5 骨架初始化(非
topthink/think):composer create-project topthink/think=5.1.39 tp5 --prefer-dist -n - 第二步:强制降级并校验框架版本:
cd tp5 && composer require topthink/framework:^5.1.40 --update-with-dependencies - 验证是否成功:
php think version应输出类似v5.1.40;ls app/应含common.php、config.php等 TP5 特征文件,而非 TP6 的provider.php
装完启动不了?重点检查 public/index.php 入口路径
TP5.1 默认应用目录是 ../app/,但部分错误安装的骨架会残留 TP6 的 ../application/ 路径,导致 require 失败或白屏。
立即学习“PHP免费学习笔记(深入)”;
- 打开
public/index.php,定位到define('APP_PATH', __DIR__ . '/../app/'); - 如果写的是
'../application/',手动改为'../app/' - 同时检查
app/下是否存在common.php—— 这是 TP5.1 的入口配置文件,TP6 已移除 - 开发阶段绕过 Web 服务器直接验证:
php -S localhost:8000 -t public/,访问http://localhost:8000应显示 TP5 欢迎页
真正麻烦的从来不是命令敲几行,而是版本错位后残留的自动加载映射和缓存。哪怕只多一个 vendor/composer/autoload_static.php 里混着 TP6 的类映射,都可能让控制器死活不加载。装完务必 php think clear 清缓存,并确认 runtime/ 目录下没遗留 TP6 生成的 route.php 或 log 文件。



















