【问题标题】:Laravel session out the box not working开箱即用的 Laravel 会话不起作用
【发布时间】: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.logtail -f /var/log/apache2/eco-error.log

标签: laravel laravel-5.3


【解决方案1】:

只需在放置后使用save();就可以了

试试这个

Session::put('key', md5(rand())); 
Session::save();

编辑

删除dd()

Route::get('/', function () {

    $value = Request::session()->get('key');
    echo $value;
    if (is_null($value)) {
        Request::session()->set('key', md5(rand()));
    }

    return view('welcome');
});

【讨论】:

  • 嗨。结果一样,看来我用Request::session()还是Session::还是session()都没关系。
  • 尝试在put() 之后申请save()Session::put('key', md5(rand())); Session::save();
  • 嗨。是的,当我运行 Session::save(); 时它会保存;然后。但是我每次都需要调用这个吗?
  • 是的,因为有时Laravel 应用程序生命周期开始了,任何放入 Session 的值在应用程序生命周期结束之前都不会存储。
  • @Martyn 希望您的问题得到解决,因此请接受并支持我的回答,以帮助其他人找到解决方案
猜你喜欢
  • 2017-11-20
  • 1970-01-01
  • 2015-06-03
  • 2017-02-27
  • 2018-07-02
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多