Laravel 11 默认精简目录结构,移除 app/Http/Kernel.php、app/Providers/、app/Exceptions/、config/session.php、config/view.php、routes/api.php、routes/web.php 等文件,统一由 bootstrap/app.php 配置中间件、路由、异常处理与服务提供者,并内置 /up 健康检查、增强的 artisan 命令及迁移默认时间戳。

直接创建一个全新 Laravel 11 项目,是查看和体验精简目录结构最可靠的方式。它不依赖升级脚本,避免旧结构残留干扰,能让你一眼看清框架“减负”后的真实面貌。
快速初始化并观察结构变化
运行标准命令创建项目:
- laravel new myapp --php=8.2(确保 PHP 版本 ≥ 8.2)
- 进入项目目录:cd myapp
- 用 ls -la 查看根目录,对比 Laravel 10 或更早版本
你会立刻注意到这些消失项:app/Http/Kernel.php、app/Providers/、app/Exceptions/、config/session.php、config/view.php、routes/api.php、routes/web.php —— 它们默认都不再存在。
核心入口文件 bootstrap/app.php 是关键
这个文件现在承载了过去分散在多个位置的逻辑:
- 中间件注册:通过
->withMiddleware()链式调用定义web、api等组 - 路由加载:
->withRouting()默认只读取routes.php,如需保留api.php,得手动require并包裹中间件 - 异常处理:必须显式调用
->withExceptions(),否则自定义App\Exceptions\Handler不生效 - 服务提供者:若用了
AppServiceProvider,需手动$app->register(AppServiceProvider::class)
验证精简结构是否生效
几个小操作就能确认你看到的是“真·Laravel 11 结构”:
- 访问 /up 路由,返回 200 OK → 健康检查端点已内置
- 运行 php artisan route:list,发现只有
routes.php中的路由 → 路由统一入口生效 - 执行 php artisan make:model Post -m,同时生成迁移、工厂、填充器 →
make:model命令增强已就位 - 打开新生成的迁移文件,看到
$table->timestamps()自动带->default(now())→ 默认值变更已启用
注意兼容性与手动补全
精简不是删功能,而是把配置权收归代码。遇到报错别急着回退:
- 提示
Middleware group [api] does not exist?→ 检查bootstrap/app.php中是否漏了$middleware->api(...) - 找不到
config/session.php?→ 相关配置可写进config/app.php的'session' => [...]键下,或按需手动创建该文件 - 想用
App\Http\Middleware\EnsureEmailIsVerified?→ 类仍可放app/Middleware/(需手动建目录),并在withMiddleware中引用

















