PHP 7用户会话问题 - 无法初始化存储模块

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (223)

在PHP 7.0中使用各种PHP框架会话驱动程序时存在错误。我最初在使用CodeIgniter数据库驱动程序时遇到了这个问题,并认为它是一个CodeIgniter问题,但后来经历过多个会话驱动程序和多个框架。在这一点上,我已经安全地得出结论,会话驱动程序的类型是无关紧要的 - 看似随机,应用程序将崩溃,日志(我已经尝试过Apache和php-fpm + nginx)填满了以下内容:

PHP致命错误:session_start():初始化存储模块失败:用户(路径:[无论我在php.ini路径中有什么])

我正在使用的驱动程序不使用php.ini中设置的值,无论我是否在php.ini中将session.save_handler设置为files,redis等,而不管我设置的路径如何(Redis服务器,如果redis,完全 - 启用了文件的可写文件夹)发生错误。除非在框架之外的php文件中调用本机“session_start()”,否则永远不应该触发此处的路径。此外,在框架之外调用“session_start()”工作正常......所以很明显PHP可以访问路径。就好像在某些时候,会话驱动程序变成了框架驱动程序和php.ini中设置的混合体。session.save_handler的错误消息总是有“user”,所以显然不是从php.ini中提取的......但路径是。为什么会这样?这是一个难以描述的问题之一,直到你经历过......并且它很难重现,因为即使是数百个会话(直到它突然停止工作),一切似乎都能正常工作。重新启动Apache也无法解决问题 - 这里有许多问题,我最终只是重新启动机器以避免停机。显然PHP 7机器现在将被拉出负载平衡器旋转......但我希望现在能够解决问题。重新启动Apache也无法解决问题 - 这里有许多问题,我最终只是重新启动机器以避免停机。显然PHP 7机器现在将被拉出负载平衡器旋转......但我希望现在能够解决问题。重新启动Apache也无法解决问题 - 这里有许多问题,我最终只是重新启动机器以避免停机。显然PHP 7机器现在将被拉出负载平衡器旋转......但我希望现在能够解决问题。

我经历过自己编译的PHP 7.0 RC5,RC6和RC8以及Ubuntu 15.10 Wily上最新的OndřejSurýPPA(7.0.0-2 + deb.sury.org~wily + 1)的问题。我在CodeIgniter和Symfony上遇到过这个问题,并且无论框架中使用的驱动程序类型(文件,数据库,redis)或php.ini中设置的session.save_handler(都应该是不相关的)都遇到过这个问题。这里,但只是认为应该提到)。我一直在尝试组合并在野外扔东西,这个问题每次都会发生(有时需要12个小时以上,具体取决于网站的流量)。

感谢您的任何帮助,您可以提供!我愿意接受建议并愿意在这一点上尝试任何事情。

提问于
用户回答回答于

我相信我已经弄明白了这个问题; 我将结束这个问题。基本上,似乎当框架会话驱动程序/配置发生问题(超出sql连接,Redis的内存不足等问题)时,它将恢复尝试使用php.ini中设置的sess.save_path,同时仍然使用框架会话驱动程序 因此,除非框架驱动程序与php.ini中的默认sess.save_path兼容,否则会发生此错误。对我来说,恢复到php.ini中的sess.save_handler也更有意义......但如果这是一个问题,那么应用程序配置存在更大的问题需要解决。

这不是错误本身会破坏会话......这是框架会话驱动程序的潜在问题。我感到愚蠢......但是日志基本上让我陷入了疯狂的追逐。重启nginx或Apache无法解决问题,因为问题出在其他地方。我相信使用可用的PHP 7 Redis库仍然存在问题,SQL问题是我的错。看似尝试了一些组合并获得相同的结果后,问题显得更加神秘。我仍然在PHP 7上使用Redis会话时遇到奇怪的错误,但正如我所说,PHP 7 Redis库还不是很成熟。

用户回答回答于

open()会话处理程序的函数未返回布尔值TRUE时,会发生此错误,这显然意味着某种失败。

它可能无法连接到数据库,无法打开文件,不存在的目录等 - 这取决于会话处理程序实际使用的内容。

扫码关注云+社区

领取腾讯云代金券