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

Fedora Linux下Laravel 'Session store not set on request'错误排查与解决

解决Laravel中'Session store not set on request'问题的排查方案

1. 确认请求经过会话中间件

Laravel的会话功能依赖web中间件组(包含StartSession核心中间件),需确保目标路由已纳入该中间件覆盖范围:

  • routes/web.php中的路由默认自动应用web中间件;若使用routes/api.php,需手动为需要会话的路由添加web中间件,示例:
    Route::middleware('web')->group(function () {
        Route::get('/api/needs-session', [YourController::class, 'targetMethod']);
    });
    
  • 也可在控制器构造函数中指定中间件:
    public function __construct()
    {
        $this->middleware('web');
    }
    

2. 检查中间件执行顺序

会话中间件必须在依赖会话的中间件(如Authenticate)之前运行,打开app/Http/Kernel.php,确认web中间件组中StartSession的位置:

protected $middlewareGroups = [
    'web' => [
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\Auth\Middleware\Authenticate::class,
        // 其他中间件...
    ],
];

确保\Illuminate\Session\Middleware\StartSession::class排在所有需要访问会话的中间件之前。

3. 验证会话存储目录权限

尽管你确认会话文件已生成,仍需验证目录权限是否符合服务器运行要求:

  • 运行服务器的用户(如www-data、nginx)需拥有storage/framework/sessions目录的读写权限;
  • 执行命令调整权限:
    chown -R www-data:www-data storage/framework/sessions
    chmod -R 755 storage/framework/sessions
    

4. 排查自定义代码的干扰

服务提供者

避免在服务提供者的register或boot方法中提前访问会话(此时会话尚未初始化),比如不要在服务提供者中调用session()辅助函数或request()->session()。

自定义中间件

排查所有自定义中间件,确认没有在StartSession执行前尝试访问会话的逻辑,例如:

// 错误示例:会话未启动时访问会话
public function handle(Request $request, Closure $next)
{
    if ($request->session()->has('user_id')) {
        // ...
    }
    return $next($request);
}

此类代码需调整到会话中间件之后执行。

5. 验证会话配置加载

  • 执行php artisan config:clear清除配置缓存;
  • 添加测试路由验证配置是否正确加载:
    Route::get('/test-session', function (Request $request) {
        // 打印会话配置,确认与.env设置一致
        dd(config('session'));
        // 尝试读写会话
        $request->session()->put('test_key', 'hello_session');
        return $request->session()->get('test_key');
    })->middleware('web');
    

访问该路由,确认配置正常且能完成会话读写操作。

6. 排查核心文件修改

若你曾修改过Laravel核心的会话相关文件(如Illuminate\Session\Middleware\StartSession),建议恢复原版文件,避免因自定义修改导致逻辑错误。

内容的提问来源于stack exchange,提问作者M3nnoun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:22:21