为什么会话对象销毁失败

Mah*_*hks 13 php session

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

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

是什么导致这个错误?

hak*_*kre 19

错误:

警告:session_destroy():会话对象销毁失败

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

@运营商并不总是有效的,例如,错误报告功能.

编辑:

1)导致此错误的原因是什么?

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

在你的情况下,PHP中session_destroy只有一个地方导致了这一点.那时session.save_handler(也见)也会 为destroy动作session_set_save_handler返回.这可能取决于您使用哪种类型的保存处理程序,默认的是文件.使用那个,当设置错误时(例如,不是可访问的目录),这将导致这样的错误.FALSEsession.save_path

2)为什么"@"不能抑制错误?

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

  • 那么解决方案是什么? (12认同)