必须安装think-multi-app扩展,否则ThinkPHP6多应用模式无法启用;该扩展提供build命令、多应用中间件及服务注册,未安装时配置项app_multi等无效,目录结构也不会被识别。

不装 topthink/think-multi-app 就没有多应用能力
ThinkPHP 6 和 8 的核心包默认是单应用架构,app_multi、app_multi_module 这类配置项只是“开关”,背后没有实现逻辑——它们只是告诉框架“如果有多应用支持,就启用它”,但没人提供这个支持。没装 topthink/think-multi-app,这些配置全无效,就像给没装显卡驱动的电脑开“4K模式”一样,系统压根不认识。
php think build 命令依赖扩展注册
执行 php think build admin 报错 Command "build" is not defined?大概率就是扩展没装或没生效。该命令由 think-multi-app 提供,不是 TP 内置 CLI 功能。安装后,扩展会自动注册服务提供者 \think\multi\AppServiceProvider::class,从而注入 build、app:create 等命令。若手动删过 config/app.php 中的 providers,或用了精简版 TP,得自己补上这行。
目录结构识别靠扩展中间件,不是靠文件夹存在与否
很多人以为只要在 app/ 下建个 admin/ 目录,框架就能自动识别。实际并非如此:TP 原生路由分发器只扫描 app/controller;think-multi-app 注册的中间件会在请求进入时解析域名、路径或子目录,再动态切换应用上下文、加载对应命名空间和配置。没这个中间件,app/admin 就是普通文件夹,连 AppNotFoundException 都不会抛——直接 404 或进默认 index 应用。
验证是否装成功只需两步
- 运行
composer show topthink/think-multi-app,有版本输出(如2.0.3)即表示已载入 - 再跑一次
composer show topthink/think,确认是6.x(TP6)或8.x(TP8)——think-multi-app不兼容 TP3 或 TP8 的某些 dev 分支,版本错配会导致行为异常
漏掉任何一环,后续所有路由绑定、域名隔离、中间件隔离都会失效。最常被忽略的是:装了扩展却没删 app/controller,这个目录存在就会强制降级为单应用模式,哪怕其他都对也白搭。
立即学习“PHP免费学习笔记(深入)”;



















