Laravel项目中Kernel.php文件缺失问题求助
Laravel 5.8.3 缺失app/Http/Kernel.php的恢复及419登录错误解决
问题背景
- Laravel版本:5.8.3
- 核心问题:
app/Http/Kernel.php文件缺失 - 关联症状:教师账号登录时触发419页面过期错误
- 已排查操作:
- 全局检索
app/Http目录未找到该文件 - 检查Git版本历史,无文件删除/移动记录
- 对比标准Laravel 5.8目录结构,确认文件不存在
- 执行
composer install未恢复文件,新建同版本项目也未生成该文件
- 全局检索
解决方案
1. 手动重建Kernel.php文件
Laravel 5.8的Kernel.php是核心配置文件,负责定义全局中间件、中间件组及路由中间件。直接在app/Http目录下创建该文件,复制以下内容:
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * 应用全局HTTP中间件栈 * 这些中间件会在每个请求处理时运行 * * @var array */ protected $middleware = [ \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, ]; /** * 应用路由中间件组 * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ]; /** * 应用路由中间件 * 这些中间件可分配给中间件组或单独使用 * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, ]; }
2. 验证依赖中间件完整性
确认app/Http/Middleware目录下存在以下Laravel 5.8默认自带的文件:
CheckForMaintenanceMode.phpTrimStrings.phpTrustProxies.phpEncryptCookies.phpVerifyCsrfToken.phpAuthenticate.phpRedirectIfAuthenticated.php
若有缺失,可从同版本Laravel项目中复制对应文件,或根据Laravel 5.8官方文档规范重建。
3. 修复419页面过期错误
419错误本质是CSRF令牌验证失败,与Kernel中的中间件配置直接相关,完成上述步骤后,执行以下操作:
- 确保登录表单中添加
@csrfBlade指令,生成合法的CSRF令牌:<form method="POST" action="/login"> @csrf <!-- 表单字段 --> </form> - 清除应用缓存:
php artisan cache:clear php artisan config:clear - 检查
storage/framework/sessions目录权限,确保服务器有写入权限(针对file类型session驱动) - 确认
web中间件组已包含VerifyCsrfToken中间件(已在重建的Kernel.php中配置)
内容的提问来源于stack exchange,提问作者Josh Dei
相关产品推荐
相关产品推荐

