我自己编译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未能编写会话的建议或想法?
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