我们在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上可能导致这些警告的原因以及如何修复它们?