首页 » phpcode » session_destroy(): Session callback expects true/false return value

session_destroy(): Session callback expects true/false return value

 

发现错误:

1.E_WARNING:session_destroy(): Session callback expects true/false return value

2.E_WARNING:session_destroy(): Session object destruction failed

原因是session是使用了

session_set_save_handler(
    array($handler, 'open'),
    array($handler, 'close'),
    array($handler, 'read'),
    array($handler, 'write'),
    array($handler, 'destroy'),
    array($handler, 'gc')
);
注意红色区域,在调用destroy的时候redis代码是这样的,如下
public function destroy($sid)
{
    if(!empty($this->config['sid_prefix'])) {
        $sid = $this->config['sid_prefix'].$sid;
    }
    return $this->redis->delete($sid);
}

官方文档说了,成功时返回 TRUE, 或者在失败时返回 FALSE。 
但是 这里却返回的是数字1。发生的这样的错误

解决办法是将
return $this->redis->delete($sid);
替换成
return (bool)$this->redis->delete($sid);
这样就确保返回值是booler值了

原文链接:session_destroy(): Session callback expects true/false return value,转载请注明来源!

1