当前位置:  开发笔记 > 编程语言 > 正文

PHP7 + Symfony 2.8,无法写入会话数据

如何解决《PHP7+Symfony2.8,无法写入会话数据》经验,为你挑选了1个好方法。

我自己编译php7(974f6c2a705).如果我使用symfony运行php7 + php-fpm + nginx我收到此错误:

(使用snc redis包进行会话:)

 Warning: session_write_close(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/tmp)

(使用本机会话支持:)

 Warning: session_write_close(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/[...]/app/cache/dev/sessions)

问题似乎与symfony有关,因为php具有对文件夹的读/写访问权限.

如果我只运行此代码,它的工作原理如下:

session_start();
$_SESSION['x'] = 4234;
session_write_close();

任何有关symfony未能编写会话的建议或想法?



1> Clay..:

PHP7对自定义会话处理程序的会话处理更严格.无论出于何种原因,Symfony的write方法的自定义会话处理程序返回false.以前这不会触发错误,但现在确实如此.

由于我们没有关于您正在使用哪个自定义会话处理程序的大量信息,因此我建议尽可能设置不同的自定义会话处理程序,因为它们中的大多数似乎都返回true.

以下是不同的会话处理程序Symfony,除了Memcache和WriteCheckSessionHandler之外,它们中的大多数似乎显式返回true:

https://github.com/symfony/symfony/tree/582f4753a343f230fbe18b4e9a0747d48351ddfb/src/Symfony/Component/HttpFoundation/Session/Storage/Handler

编辑:

既然你提到了Snc Redis Bundle会话处理程序,你确定你使用的是最新版本吗?一年前,它被修改为始终在写入时返回true:

https://github.com/snc/SncRedisBundle/blob/master/Session/Storage/Handler/RedisSessionHandler.php

UPDATE

向PHP提交了一个错误,看看我们是否可以为将来的版本找出更有用的错误消息(请投票或对错误报告发表评论):

https://bugs.php.net/bug.php?id=71070


我搬到了开发大师(Snc Redis Bundle)并且它有效.谢谢.
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有