Laravel并不采用原生$_SESSION的方式去存储和读取。
1. 检查PHP设置,必须开启session和cookie。
2. 检查config/session.php文件是否有问题,通常默认为文件存储。
3. 因为Laravel使用'web'中间件启用Session,因此必须在路由文件routes/web.php将控制器加入到'web'中间件中。
4. 在app/Http/Kernel.php文件找到$middlewareGroups设置,'web'组中加入\Illuminate\Session\Middleware\StartSession::class让Session自动开启。
5. 不能将Session的读取代码写到控制器Controller的构造方法__construct中。
6. 如果使用put方法写入变量后,无法读取,要执行类似Session::save()强制保存。
这坑踩的有点深了,相信很多的网友未必遇到这么多。下面附送一段读写代码作为例子。
$alerts = Session::get('alerts', []); var_dump($alerts); Session::put('alerts', ['msg'=>'HelloSession']); Session::save(); var_dump(Session::get('alerts', [])); Session::remove('alerts'); Session::save();
至此,Laravel之Session存取的坑总算填完了。