从5.5

时间:2018-03-16 15:41:56

标签: php laravel session laravel-5

我将我的应用程序的Laravel框架从5.5更新到5.6,从那以后我就无法让会话持久化。

问题是,在发出帖子请求时(例如/ login),我总是得到错误" Page expired"所以它是关于CRFS-Token的东西,因为我正确地发送了它请求我检查了我保存会话的数据库,我发现每次尝试都会生成一个新会话。

我尝试将config / session.php设置为原始, 删除浏览器缓存/ cookie, 我检查了我的内核和中间件,如果5.6的内容发生了变化, 我清除了视图,缓存和路由, 还有更多,但没有成功。

任何想法,我不明白?

1 个答案:

答案 0 :(得分:0)

虽然我也无法使文件或数据库正常工作,但确实可以切换到Cookies进行会话。请小心您允许Cookie变大的大小。

编辑:因此,我了解了为什么文件会话对我不起作用。我的php系统不支持文件锁定,这阻止了会话文件的加载。在/vender/laravel/framework/sr/Illuminate/Filesystem/Filesystem.php文件中,我必须覆盖$lock变量以始终为false:

/**
 * Get the contents of a file.
 *
 * @param  string  $path
 * @param  bool  $lock
 * @return string
 *
 * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
 */
public function get($path, $lock = false)
{
    $lock = false; //I ADDED THIS LINE
    if ($this->isFile($path)) {
        return $lock ? $this->sharedGet($path) : file_get_contents($path);
    }

    throw new FileNotFoundException("File does not exist at path {$path}");
}