【问题标题】:Laravel Session store not set on requestLaravel 会话存储未按要求设置
【发布时间】:2026-02-20 04:15:02
【问题描述】:

我正在开发一个小型网站,但遇到了会话问题。当我尝试登录或进行 AJAX 调用时,我收到以下 RuntimeException:

RuntimeException in Request.php line 758: Session store not set on request.

in Request.php line 758
at Request->session() in VerifyCsrfToken.php line 87
at VerifyCsrfToken->tokensMatch(object(Request)) in VerifyCsrfToken.php line 49
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Language.php line 38
at Language->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Language), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54

知道我做错了什么。提前致谢

【问题讨论】:

    标签: session laravel-5.1 runtimeexception


    【解决方案1】:

    删除此文件夹中的所有内容storage/framework/sessions 并确保该文件夹具有写权限

    【讨论】:

    • 它没有帮助,我仍然得到 RuntimeException,但还是谢谢。
    【解决方案2】:

    您的项目中是否存在文件“/config/session.php”?如果没有,请创建它并确保所有选项都设置正确。

    【讨论】:

    • 是的,它确实存在,据我所知,所有选项都设置正确。我会仔细检查,看看是否有什么我能做的。尽管如此,我还是必须创建一个新项目并手动导入我的所有文件,而现在另一个项目按预期工作。
    【解决方案3】:

    看看@Cas Bloem 他在这里的回答,这对我有很大帮助:

    Laravel - Session store not set on request

    这就是为什么它对我不起作用。因为您正在使用一个期望匹配 CSRF 令牌的会话(这是我最好的猜测,我自己是 Laravel 的新手)。

    此外,如果您转到 app->http->middleware->VerifyCsrfToken,您可以将路由添加到不会检查 CSRF 验证的数组。这加上 Cas Bloem 他的修复(将路由放置在 routes.php 的不同部分)解决了我的问题。我现在只是在 localhost 上开发/学习,但需要稍后实现。

    希望这有助于/解决问题!

    【讨论】:

    • 此解决方案仅适用于 laravel 5.2 这不是 OP 正在运行的
    【解决方案4】:

    假设您使用 Laravel 5.2:如果您需要会话状态、CSRF 保护等,则需要使用 Web 中间件。 (就像 5.1 中的全局)

    Route::group(['middleware' => ['web']], function () {

    【讨论】:

    • OP 声明他使用 5.1
    • 是的,我在那个项目上使用了 5.1,正如我之前所说,解决方案是创建 Laravel 5.1 的新副本并导入我生成的所有文件。那个项目一团糟,几个开发人员都在研究它,我设法处理了它。感谢您的帮助,但这是一种独一无二的体验,因此无法选择正确的答案,尽管您的答案可能适用于与此异常相关的其他问题。