You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.php
  • TrimStrings.php
  • TrustProxies.php
  • EncryptCookies.php
  • VerifyCsrfToken.php
  • Authenticate.php
  • RedirectIfAuthenticated.php

若有缺失,可从同版本Laravel项目中复制对应文件,或根据Laravel 5.8官方文档规范重建。

3. 修复419页面过期错误

419错误本质是CSRF令牌验证失败,与Kernel中的中间件配置直接相关,完成上述步骤后,执行以下操作:

  • 确保登录表单中添加@csrf Blade指令,生成合法的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:06:11