使用PHP 7和ZF2进行Redis会话缓存:会话对象销毁失败

时间:2016-03-21 12:08:06

标签: php session redis zend-framework2

我们在PHP 5.6上的Zend Framework 2项目(使用zend-session 2.5.2)中使用Redis缓存会话。

升级到PHP 7.0.4后,有一个带有redis会话缓存的problem,导致用户登录时出现以下错误:PHP message: PHP Catchable fatal error: session_regenerate_id(): Failed to create(read) session ID: user。但是自定义保存处理程序修复了它:

namespace OurFramework\Session\SaveHandler;

class Cache extends \Zend\Session\SaveHandler\Cache
{    
    public function read($id)
    {
        return (string)parent::read($id);
    }
}

会话配置如下:

'session' => [
    'cookie_lifetime' => '172800', 
    'cookie_secure'   => '1',
    'cookie_httponly' => '1',
    'name'            => 'some-session-name',
    'save_handler'    => 'redis',
    'save_path'       => "tcp://$host:$port?weight=1&timeout=3",
],

但是,当用户退出时,我们也会收到session_regenerate_id(): Session object destruction failed. ID: user (path: tcp://host:port?weight=1&timeout=3)session_destroy(): Session object destruction failed等警告。

在PHP 7.0.4上可能导致这些警告的原因以及如何修复它们?

0 个答案:

没有答案