【发布时间】:2017-05-28 18:36:54
【问题描述】:
我创建了一个新的 laravel 安装,我尝试做的第一件事就是确认会话正在工作:
Route::get('/', function () {
$value = Request::session()->get('key');
if (is_null($value)) {
Request::session()->set('key', md5(rand()));
}
dd(Request::session()->get('key'));
return view('welcome');
});
我希望在这里存储会话“密钥”,然后在下一次刷新时,每次都会输出(dd)相同的密钥值。然而,事实并非如此。每次我都会为“key”获得不同的值。所以我猜会话数据没有被存储?
如果有帮助,下面是 config/session.php 内容:
'driver' => env('SESSION_DRIVER', 'file'),
...
'files' => storage_path('framework/sessions'),
...
我的 .env 有以下内容:
...
SESSION_DRIVER=file
...
文件夹的权限是:
$ ll /var/www/o-eco/website/storage/framework
total 24
drwxrwxr-x 1 ubuntu www-data 4096 Oct 3 02:33 ./
drwxrwxr-x 1 ubuntu www-data 4096 Oct 3 02:33 ../
drwxrwxr-x 1 ubuntu www-data 4096 Oct 3 02:33 cache/
-rw-rw-r-- 1 ubuntu www-data 103 Oct 3 02:33 .gitignore
drwxrwxr-x 1 ubuntu www-data 4096 Jan 13 10:59 sessions/
drwxrwxr-x 1 ubuntu www-data 4096 Jan 13 10:59 views/
$ ll /var/www/o-eco/website/storage/framework/sessions
total 16
drwxrwxr-x 1 ubuntu www-data 4096 Jan 13 10:59 ./
drwxrwxr-x 1 ubuntu www-data 4096 Oct 3 02:33 ../
-rw-rw-r-- 1 ubuntu www-data 258 Jan 13 10:59 5xqzOeb6f5lLKyvZIwOeonutkmluREfcaQ5owTNE
-rw-rw-r-- 1 ubuntu www-data 14 Oct 3 02:33 .gitignore
注意:这一次,我在一个 vagrant box 中进行开发,所以所有文件都是 ubuntu:www-data。另外,我什至尝试将会话目录/文件设置为 777,但仍然没有区别。
另外,我有两个 cookie:XSRF-TOKEN 和 laravel_session。这些在每次刷新时都保持不变。
【问题讨论】:
-
我尚未对此进行测试,但您不需要 PHP 的用户和组来读取/写入这些文件。您的日志中有任何内容吗?
-
不要使用请求类,使用Session::get();
-
查看我的答案,希望它有效! stackoverflow.com/questions/41542802/… 让我知道这是否有效!
-
嗨罗宾。谢谢回复。不,它没有用。结果相同。
-
我改为 Session::get/put 但还是一样。我的日志中也没有出现任何内容 -
tail -f storage/logs/laravel.log或tail -f /var/log/apache2/eco-error.log
标签: laravel laravel-5.3