首页 > 解决方案 > PHP 7.2 中的自定义会话处理函数

问题描述

我使用自定义方法将会话存储到 MySQL 表中。

private static function load()
{
    session_module_name("user");
    session_set_save_handler(['\CB\Session', 'open'],
                             ['\CB\Session', 'close'],
                             ['\CB\Session', 'read'],
                             ['\CB\Session', 'write'],
                             ['\CB\Session', 'remove'],
                             ['\CB\Session', 'gc']
                             );
    session_start();       
}

现在我不得不注释掉它,session_module_name("user");因为它在 PHP 7.2 中被删除了。但现在我得到了错误:

警告:session_start():无法读取会话数据:第 38 行 /home/username/path/lib/CB/Session.php 中的用户(路径:/var/lib/php/sessions)

为什么当我的函数将它们写入/读取到 MySQL 表时,它会尝试在 /var/lib/php/sessions 读取/写入会话。(而且我的 MySQL 表没有被填充)

标签: sessionphp-7.2

解决方案


在http://php.net/manual/en/function.session-start.php#120589找到了答案
我的读取函数必须检查会话数据是否为空,如果是则返回 ''。
我不知道这是 PHP 中的新事物还是错误。


推荐阅读