thinkphp 6 双应用结构需先安装并启用 think-multi-app 扩展,删除 app/ 下的 controller 等单应用目录,用 php think build 创建 admin/api 应用,显式导入路由并刷新自动加载,方可成功访问。

刚下载完 ThinkPHP 6 项目,想立刻跑通一个带后台(admin)和 API(api)的双应用结构,但卡在目录手动创建、命名空间报错、路由不生效这三关——这不是配置没写对,而是骨架根本没搭对。
确认多应用扩展已安装并启用
进入项目根目录,执行 composer show topthink/think-multi-app;若提示“Package not found”,说明扩展未安装,必须先运行 composer require topthink/think-multi-app。
检查 config/app.php 中的 providers 数组,确保包含 【\think\multi\AppServiceProvider::class】;漏掉这行,后续所有命令都无效。
执行 php think version,输出中必须出现 think-multi-app 字样,否则扩展未注册成功,别往下走。
彻底清理单应用残留结构
TP6 的判断逻辑极其严格:【只要 app/controller 目录存在,就强制进入单应用模式】,哪怕你已开启 app_multi = true,也完全无效。
删除以下全部平铺在 app/ 下的目录:controller、model、middleware、view;保留 app/common.php 和 app/middleware.php 这类全局文件。
删完立即清缓存:执行 php think clear:route && php think clear:config;不清缓存,旧路由规则仍会干扰新应用加载。
用命令生成合法应用目录(不可手建)
方法一:快速创建 admin 应用
执行 php think build admin(TP6.0.x)或 php think app:create admin(TP6.1+);成功后检查 app/admin/controller/Index.php 是否存在,且类定义为 namespace app\admin\controller;。
方法二:批量创建多个应用
在 app/ 目录下新建 build.php,内容如下:
return [ 'admin' => ['__dir__' => ['controller', 'model'], 'controller' => ['Index']], 'api' => ['__dir__' => ['controller'], 'controller' => ['User']] ];
然后执行 php think build;【应用名只能是小写字母+下划线,admin-v2 或 Admin 都会导致 Class not found】。
显式导入各应用路由
打开全局路由入口 config/route.php,在文件末尾添加:
Route::import('admin', 'admin');<br>Route::import('api', 'api');
TP6 不会自动扫描 app/admin/route.php,没这行代码,访问 /admin/ 就会报 App not exists: admin。
每个子应用的 route.php 必须真实存在(哪怕为空),否则导入失败;检查 app/admin/route.php 和 app/api/route.php 是否已生成。
验证控制器是否可访问
第一步:确保 app/admin/controller/Index.php 中的类名为 Index,且命名空间为 app\admin\controller;大小写错一个字母,就会触发 Class not found。
第二步:运行 composer dump-autoload -o;新增应用目录后 Composer 不会自动感知,必须手动刷新自动加载映射。
第三步:启动服务 php think run,浏览器访问 http://127.0.0.1:8000/admin;看到 “【后台应用】” 即表示 admin 应用已跑通。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











