在Laravel中,会话驱动决定了用户的会话数据以什么形式、存放在哪里。框架自带了file、cookie、database、redis、memcached、array等驱动,开发者可以通过统一配置自由切换,而不用改业务代码。

一、通过环境变量设置驱动
最常用的方法是修改项目根目录下的.env文件,设置SESSION_DRIVER的值。该值会覆盖配置文件中的默认项。
# .env 文件示例 APP_NAME=Laravel APP_ENV=local # 设置会话驱动为 redis SESSION_DRIVER=redis # 会话生命周期(分钟) SESSION_LIFETIME=120
二、配置文件说明
打开config/session.php,可以看到driver节点的定义。如果.env里设了SESSION_DRIVER,这里会优先读取。
<?php
return [
// 驱动类型:file, cookie, database, redis, memcached, array
'driver' => env('SESSION_DRIVER', 'file'),
// 使用 file 驱动时的存储路径
'files' => storage_path('framework/sessions'),
// 使用 database 驱动时的表名
'table' => 'sessions',
// 使用 redis 驱动时的连接名
'connection' => env('SESSION_CONNECTION', 'default'),
];
三、各驱动适用场景
| 驱动 | 存储位置 | 适用情况 |
|---|---|---|
| file | 服务器磁盘 | 单机部署、快速起步 |
| database | 数据库表 | 需查询会话、单机或主从 |
| redis | Redis内存 | 多机共享、高并发 |
| array | 当前请求内存 | 测试、命令行 |
四、database驱动建表
若选database,要先建表。Laravel提供了迁移命令:
php artisan session:table php artisan migrate
五、redis驱动连接示例
确保config/database.php中redis配置正确,然后在.env写:
SESSION_DRIVER=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
代码中使用会话
无论哪种驱动,业务里用法一致:
<?php
use IlluminateSupportFacadesSession;
// 写入
Session::put('user_id', 1001);
// 读取
$id = Session::get('user_id');
// 判断
if (Session::has('user_id')) {
// 业务逻辑
}
六、注意事项
- 修改驱动后,建议清一次旧会话,避免格式不兼容。
- array驱动不会持久化,别用在生产环境。
- 多台服务器部署时,file和array都不适合,优先redis或database。
会话驱动设置是Laravel起步的基础配置,按访问规模选好存储,后续基本不用动代码。
Laravelsession_driverredisfile_sessiondatabase_session修改时间:2026-07-25 13:27:10