php – 为什么会话对象销毁失败

当我使用session_destroy()时,我得到“会话对象销毁失败”.

session_start();
if(isset($_SESSION['user_id'])){    
    $_SESSION=array();
    if(isset($_COOKIE[session_name()])){
        setcookie(session_name(),'',0,"/");
    }
    session_destroy();
}

是什么导致这个错误?

最佳答案
错误:

Warning: session_destroy(): Session object destruction failed

这是相当微不足道的,没有会话已经启动对象已被评估,所以你不能破坏它.

@运算符并不总是有效,例如具有错误报告功能.

编辑:

1) What causes this error?

当PHP尝试删除会话文件时,通常会导致此错误,但无法找到它.

在你使用session_destroy的情况下,只有one place in PHP导致这种情况.那时session.save_handler(参见session_set_save_handler)对于销毁动作返回FALSE.这可能取决于您使用哪种类型的保存处理程序,默认的是文件.使用那个,当session.save_path设置错误时(例如,不是可访问的目录),这将导致这样的错误.

2) Why would the “@” not be suppressing the error?

这取决于输出的创建方式和PHP配置. @并不总是有效.例如,使用set_error_handler注册的回调仍将收到这些消息.

转载注明原文:php – 为什么会话对象销毁失败 - 代码日志