用 composer create-project 安装 TP6 得到的是单应用“空壳”,需执行 php think build 并设 app_multi => true 才能启用多应用;否则因缺少目录、自动加载和路由识别导致 404 或 Class not found。

直接说结论:用 composer create-project 装 TP6 没问题,但装完只是个“空壳”,不是开箱即用的多应用项目;真正能跑起来、不报错的关键动作是执行 php think build 和配置 app_multi => true,而不是改入口、复制目录或硬编码应用名。
为什么 composer create-project 装完就访问 404 或 Class not found?
因为默认安装只生成 app/index 这一个应用,且没注册自动加载规则。你访问 /admin/xxx 时,框架根本不知道 app/admin 目录存在——它连这个文件夹都没有。
-
composer create-project topthink/think tp6只拉取基础框架,app下只有index子目录 - 手动新建
app/admin不起作用:类自动加载没注册,命名空间也不对(应为app\admin\controller\Index,不是app\controller\admin\Index) - 没运行
php think build admin→app/admin不会自动生成,也不会写入 PSR-4 自动加载映射 - 没执行
composer dump-autoload -o→ 即使目录有了,PHP 也找不到类
怎么正确生成多应用结构并让路由识别?
别手建目录,用官方构建命令。TP6 的多应用是靠 build.php 配置 + php think build 命令驱动的,不是靠 Nginx 重写或子域名。
- 在项目根目录新建
build.php,内容示例:return [ 'admin' => ['controller', 'model', 'config'], 'api' => ['controller', 'model', 'config'], ]; - 执行
php think build→ 自动生成app/admin、app/api及其标准子目录 - 编辑
config/app.php,设'app_multi' => true→ 启用路径前缀自动识别(访问/admin/index就进admin应用) - 确保每个应用子目录名只含字母、数字、下划线,否则路由解析失败(比如
app/admin-v2会挂)
环境配置和常见命令陷阱
很多问题其实跟 Composer 无关,而是 PHP 环境或命令执行位置错了。尤其 Windows 下容易卡在路径和权限上。
立即学习“PHP免费学习笔记(深入)”;
-
php think run是最简启动方式,端口默认 8000;别急着配 Apache/Vhost,先确认php -v≥ 7.1 且php think命令能执行 - 换国内镜像要用
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer,旧地址phpcomposer.com已失效 -
.env文件必须从.example.env重命名而来,Windows 资源管理器直接改名会丢掉开头的点,得用命令行:ren .example.env .env - 修改了
config/或新增了应用,记得补一句composer dump-autoload -o,否则新控制器永远 404
真正复杂的从来不是安装,而是多应用下的配置继承边界:比如 app/admin/config/database.php 会合并覆盖根 config/database.php,但中间件、事件监听器、命令行指令这些不会自动跨应用生效,得各自在 app/*/provider.php 里手动注册——这点没人提,但上线后准出问题。











