直接升级ThinkPHP 5.1到6.1.5不可行,因TP6是完全重写、不兼容旧架构;需新建TP6项目并逐步迁移业务逻辑:先安装TP6.1.5骨架,再识别可复用内容(如模型、静态资源),最后适配路由、配置、扩展等关键组件。

直接用 Composer 把 ThinkPHP 5.1 项目“升级”成 6.1.5 是不可行的——TP6 是完全重写的架构,不兼容 TP5 的目录结构、核心类名、路由机制和配置方式。所谓“迁移”,本质是新建 TP6 项目 + 逐步移植业务逻辑,而非一键替换。下面分三步讲清楚怎么做才少踩坑。
第一步:确认环境与安装新 TP6.1.5 项目
TP6.1.5 要求 PHP ≥ 7.1(推荐 7.4+),且必须用 create-project 创建完整骨架:
- 确保已装 Composer 并设好国内镜像(如阿里云):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 选一个空目录(不要复用 TP5 的旧文件夹),执行:
composer create-project "topthink/think:^6.1.5" tp615
(注意双引号,防止 shell 解析 ^ 符号) - 进
tp615目录,运行php think version,输出v6.1.5才算成功
第二步:识别并剥离 TP5 项目的可复用内容
TP5 的 app/ 目录里,只有部分代码能平移过去,其余必须重写:
-
可直接复制的:模型类(
app/model/下的 PHP 文件)、自定义验证规则、公共函数文件(需检查语法是否符合 PHP7.1+)、静态资源(public/static/) -
必须重写的:
- 控制器:TP6 默认使用
app\controller\IndexController类,方法返回 Response 对象,不再支持 TP5 的display()或直接 echo - 路由:TP5 的
route/route.php全部失效;TP6 路由统一在app/middleware.php或app/provider.php中注册,或用注解路由 - 配置:TP5 的
config/下多个 PHP 文件 → TP6 改为config/app.php等单文件 +.env环境变量驱动 - 数据库配置:从
database.php移到.env中的DB_TYPE、DB_HOST等字段
- 控制器:TP6 默认使用
第三步:关键组件适配与扩展安装
TP5 常用扩展在 TP6 中需换新版,命令和用法也有变化:
立即学习“PHP免费学习笔记(深入)”;
- 视图模板:
composer require topthink/think-view
→ 模板路径默认变为view/(非 TP5 的template/),后缀仍为.html - 验证码:
composer require topthink/think-captcha
→ 调用方式从Captcha::create()改为Captcha::create('name'),且需手动注册服务提供者 - 数据库迁移(替代 TP5 的 SQL 手动维护):
composer require topthink/think-migration
→ 运行php think migrate:create InitUsersTable生成迁移文件,再php think migrate:run执行 - 多应用模式(若原 TP5 是多模块):
composer require topthink/think-multi-app
→ 安装后删掉app/controller,再用php think build admin生成新应用目录
迁移不是覆盖,而是重建加对接。先跑通 TP6 默认首页,再逐个把模型、API 接口、后台功能按模块搬过去,每搬一块就测一次数据库读写和路由响应。TP5 的 application 目录别删,留作对照参考。



















