在 PHP 7.0 中使用各种 PHP 框架会话驱动程序时存在错误。我最初在使用 CodeIgniter 数据库驱动程序时遇到了这个问题,并认为这是一个 CodeIgniter 问题,但后来在多个会话驱动程序和多个框架上遇到了这个问题。此时,我已经安全地得出结论,会话驱动程序的类型是无关紧要的 - 看似随机,应用程序将崩溃并且日志(我已经尝试过 Apache 和 php-fpm + nginx)填充以下内容:
PHP 致命错误:session_start():无法初始化存储
模块:用户(路径:[我的 php.ini 路径中的任何内容])
我使用的驱动程序不使用 php.ini 中设置的值,无论我是否在 php.ini 中将 session.save_handler 设置为文件、redis 等,也无论我设置的路径(Redis 服务器,如果是 redis,完全-启用文件的可写文件夹)发生错误。除非在框架外部的 php 文件中调用本机“session_start()”,否则永远不应点击此处的路径。另外,在框架之外调用“session_start()”工作正常......所以显然 PHP 可以访问该路径。就好像在某个时刻,会话驱动程序成为框架驱动程序和 php.ini 中设置的任何内容的混合体。错误消息始终包含 session.save_handler 的“user”,因此显然这不是从 php.ini 中提取的...但路径是。为什么会出现这种情况呢?这是在您经历过之前很难描述的问题之一......并且很难重现,因为即使在数百个会话中一切似乎都工作正常(直到它突然停止工作)。重新启动 Apache 也无法解决该问题 - 这里存在许多问题,我最终只是重新启动机器以避免停机。显然,PHP 7 机器现在将退出负载均衡器轮换……但我希望现在已经解决了问题。
我自己编译的 PHP 7.0 RC5、RC6 和 RC8 以及 Ubuntu 15.10 Wily (7.0.0-2+deb.sury.org~wily+1) 上的最新 Ondřej Surý PPA 都遇到过这个问题。我在 CodeIgniter 和 Symfony 上遇到过这个问题,并且无论框架中使用的驱动程序类型(文件、数据库、redis)或 php.ini 中设置的 session.save_handler (这应该是无关紧要的),都遇到过这个问题在这里,但只是认为应该提及)。我不断尝试组合并把东西扔到野外,这个问题每次都会发生(有时需要 12 个多小时,具体取决于网站的流量)。
感谢您的任何帮助,您可以提供!我愿意接受建议,并愿意在这一点上尝试任何事情。
当open()
会话处理程序的函数不返回布尔值 TRUE,这显然意味着某种失败。
可能是无法连接到数据库、无法打开文件、不存在的目录等等 - 这取决于会话处理程序实际使用的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)