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

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

如何解决《PHP7用户会话问题-无法初始化存储模块》经验,为你挑选了2个好方法。

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

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

我正在使用的驱动程序不使用php.ini中设置的值,无论我是否将session.save_handler设置为php.ini中的文件,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上最新的OndřejSurýPPA(7.0.0-2 + deb.sury.org~wily + 1)的问题.我在CodeIgniter和Symfony上遇到过这个问题,并且无论框架中使用的驱动程序类型(文件,数据库,redis)还是php.ini中设置的session.save_handler(都应该是不相关的)都遇到过这个问题.这里,但只是认为应该提到).我一直在尝试组合并在野外扔东西,这个问题每次都会发生(有时需要12个小时以上,具体取决于网站的流量).

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



1> Narf..:

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

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



2> Moin Uddin..:

function _open应返回true以避免此错误.

无论我们使用数据库还是文件,它都不能为null或为空.

当我们使用数据库来存储会话数据时,我们将其保留为空或不返回布尔值.这是导致此错误的主要原因.

class session_handler
{
    public function __construct()
    {
        session_set_save_handler(
            array($this, "_open"),
            array($this, "_close"),
            array($this, "_read"),
            array($this, "_write"),
            array($this, "_destroy"),
            array($this, "_gc")
        );
    }

    public function _open($savePath, $sessionId)
    {
        return true;
    }

    public function _close() {  }    
    public function _read($id) {  }
    public function _write($id, $data) {  }
    public function _destroy($id) {  }
    public function _gc($max) {  }
}

它仅适用于PHP 7.我不知道它是否是一个bug.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有