必须同时配置 SESSION_DRIVER=redis 和 REDIS_CLIENT=phpredis(或 predis),并确保 Redis 连接参数正确、SESSION_DOMAIN=.example.com 跨域生效、PHP 已启用对应扩展,否则会报错或静默失败。

Session 驱动设为 redis 时 SESSION_DRIVER 和 REDIS_CLIENT 怎么配
必须同时改两个地方,光改 SESSION_DRIVER=redis 不够,Laravel 默认用 predis 客户端,但新版 Laravel(9+)默认已切到 phpredis,不一致就会报 Class "Predis\Client" not found 或静默失败。
-
.env里设SESSION_DRIVER=redis,且确保REDIS_CLIENT=phpredis(若装的是phpredis扩展)或REDIS_CLIENT=predis(若用composer require predis/predis) -
config/database.php中的redis.default必须能连通,host、port、password(如有)要和 Redis 实际配置对齐 - Laravel 10+ 若用
phpredis,还需确认 PHP 已启用该扩展:php -m | grep redis,没输出就说明没装或没启
共享 Session 前先确认 SESSION_DOMAIN 和 SESSION_SECURE_COOKIE
跨子域(比如 app.example.com 和 api.example.com)共享 Session,光靠 Redis 存储不够,Cookie 本身得能被两个域名同时读取,否则请求压根带不上 session_id。
-
SESSION_DOMAIN=.example.com(注意开头的点),这样 Cookie 才会在所有子域下发;填example.com或留空都无效 -
SESSION_SECURE_COOKIE=true时,浏览器只在 HTTPS 下传 Cookie,测试环境若没配 HTTPS,得设为false,否则登录后立刻掉 Session -
SESSION_HTTP_ONLY=true和SESSION_SAME_SITE=lax是安全推荐值,但不影响共享逻辑,别为“共享”去关它们
Redis 连接超时或 ERR max number of clients reached 怎么查
线上突然 Session 失效、登录态反复丢失,大概率不是代码问题,而是 Redis 连接资源耗尽或配置不匹配。
安全地重置 OpenClaw agent sessions,支持备份、预览、恢复和批量操作。用于:1) 清理过期的 agent 会话上下文,2) 重置特定 agents 的 session,3) 批量重置六部/秘书 sessions,4) 查看和恢复历史备份。当用户需要"reset session"、"清理 se...
- 检查 Redis 的
maxclients:运行redis-cli config get maxclients,默认通常 10000,但 Laravel 每个请求会建新连接(除非用连接池),高并发下容易打满 -
config/database.php里redis.options下可加'prefix' => 'laravel_session:',避免和其他项目 key 冲突,也方便redis-cli keys 'laravel_session:*' | wc -l查当前 session 数量 - 如果用的是 Laravel Octane,必须用
phpredis+connection_pool配置,predis不支持连接复用,Octane 下极易触发连接数告警
artisan tinker 里验证 Session 是否真存进 Redis
别只信日志或浏览器行为,直接进 Redis 看 key 存不存在、TTL 对不对,是最稳的验证方式。
- 先在路由里写个临时测试点:
session(['test_key' => 'test_value']); dd(session()->getId());,拿到 session_id - 然后
redis-cli连上去,执行get "laravel_session:{session_id}"(Laravel 默认 key 前缀是laravel_session:) - 如果返回
(nil),优先查config/session.php里的connection键是否为空(应为null表示用默认 Redis 连接),不是default或其他字符串
Session 共享真正卡住的地方,往往不在 Redis 配置本身,而在 Cookie 域名策略和连接复用机制之间那层薄薄的错位。调通前,先盯住浏览器 DevTools → Application → Cookies 里 laravel_session 的 Domain 和 Secure 状态,比看日志快十倍。


















