Laravel 11.x 仍有 app/Http/Kernel.php,它是标准 Web 应用中间件注册的唯一权威入口;若缺失,通常因使用 --minimal 创建、非标结构或误删,可通过 php artisan install:kernel 恢复。

Laravel 11.x 仍然有 app/Http/Kernel.php,它没有被移除,也不是“没有”——只是在某些新安装的 Laravel 11 项目中(尤其是启用了 "stacked" 应用结构 或使用了 laravel-zero / laravel/sail 等精简模板时),你可能一时没找到,或误以为被替代了。
实际上,截至 2026 年 10 月(Laravel 11.30+),标准 Laravel Web 应用的中间件注册核心文件依然是:
app/Http/Kernel.php
✅ 它默认存在,且是中间件注册的唯一权威入口。
❌ 没有被 bootstrap/app.php、config/app.php 或其他文件取代。
为什么你可能“找不到” Kernel.php?
- 你创建的是 Laravel 11 的 minimal / console-only 应用(比如用
--minimal或laravel new myapp --minimal),这类项目默认不包含 HTTP 层,因此没有app/Http/目录,自然也没有Kernel.php。 - 你正在查看一个 非标准结构 的项目(如自定义骨架、Monorepo 子包、或误删了
app/Http)。 - IDE 搜索未刷新,或你搜索路径写错了(例如搜
kernel.php小写,但实际是Kernel.php,Linux 下区分大小写)。
✅ 验证方式:在终端运行
立即学习“PHP免费学习笔记(深入)”;
ls app/Http/Kernel.php如果报
No such file or directory,说明当前项目不是完整 Web 应用。
如果真是「无 Kernel.php」的 Laravel 11 项目,怎么办?
情况一:你本意要建 Web 应用,但用了 --minimal
重新创建标准项目:
laravel new myapp # 不加 --minimal → 自动含 app/Http/Kernel.php # 或 composer create-project laravel/laravel myapp
情况二:你确认是完整 Laravel 11,但 app/Http/Kernel.php 被删了
恢复它最简单的方式是:
php artisan install:kernel
⚠️ 注意:该 Artisan 命令在 Laravel 11.25+ 已内置,会自动重建标准
Kernel.php及基础中间件配置(包括$middleware,$middlewareGroups,$routeMiddleware)。
或者手动创建 app/Http/Kernel.php,内容与官方一致(可从 Laravel GitHub 模板 复制)。
Kernel.php 在 Laravel 11.x 中依然承担这些事:
- 全局中间件(
$middleware)→ 所有请求都过(如TrustProxies,HandleCors) - 中间件分组(
$middlewareGroups)→ 如'web','api', 或自定义'admin' - 路由级中间件别名(
$routeMiddleware)→ 如'auth' => \App\Http\Middleware\Authenticate::class
所有中间件仍需按规则注册并引用,逻辑与 Laravel 9/10 完全一致,无 Breaking Change。
补充:Laravel 11 的小变化(不改变 Kernel.php 地位)
-
app/Providers/RouteServiceProvider.php中的boot()方法默认不再加载routes/web.php和routes/api.php—— 改为通过Route::middleware('web')或Route::middleware('api')显式绑定,但这反而更强调 Kernel.php 中'web'和'api'组的存在和正确性。 - 新增
app/Http/Middleware/TrustHosts.php等默认中间件,它们仍需在Kernel.php中注册才能生效。
所以结论很明确:
不是 Laravel 11.x “没有 Kernel.php”,而是你的项目要么不是标准 Web 版本,要么它被意外删除或未生成。
只要它是完整 Laravel Web 应用,app/Http/Kernel.php 就必须存在,也必须用于配置中间件。



















