当前位置: 首页 > 面试题库 >

为什么会话对象销毁失败

徐昕
2023-03-14
问题内容

当我使用session_destroy()时,出现“会话对象销毁失败”的消息。

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

是什么导致此错误?


问题答案:

错误:

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

这相当琐碎,没有会话 已启动, 对象已提交,因此您无法销毁它。

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

编辑:

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

此错误通常是由于PHP尝试删除会话文件而导致的,但找不到它。

在您的情况下,PHP中session_destroy只有一个地方会导致这种情况。那是session.save_handler(请参见
session_set_save_handler)返回FALSE进行 销毁 操作的时间。这可以取决于您使用哪种类型的保存处理程序,默认类型是 files
。如果session.save_path设置错误(例如,不可访问的目录),则会导致这种错误。

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

这取决于如何创建输出以及如何配置PHP。@并不总是有效。例如,向其注册的回调set_error_handler仍将收到这些消息。



 类似资料:
  • 对象使用完之后需要对其进行清除。对象的清除是指释放对象占用的内存。在创建对象时,用户必须使用 new 操作符为对象分配内存。不过, 在清除对象时,由系统自动进行内存回收,不需要用户额外处理。这也是 Java 语言的一大特色,某种程度上方便了程序员对内存的管理。 Java 语言的内存自动回收称为 垃圾回收(Garbage Collection)机制,简称 GC。垃圾回收机制是指 JVM 用于释放那些

  • 如果一个具有静态存储持续时间的对象的构造函数的完成或动态初始化在另一个对象的完成之前被排序,则第二个对象的析构函数的完成将在第一个对象的析构函数的启动之前被排序。[注:此定义允许并发销毁。-结束注] 第二个和第一个的完成析构函数可能在不同的线程中吗?

  • 问题内容: 我创建了一个基于会话的简单登录页面。 并添加了一个包含此内容的注销页面 现在,当我关闭浏览器/页面并重新打开它时,会话的值仍然存在。 我想知道如何完全销毁页面/浏览器关闭上的会话。 问题答案: 如果您使用: 关闭浏览器时,您的会话cookie将会被破坏…因此,在关闭浏览器之前,您的会话将是良好的。IE浏览器 您登录并登录,然后关闭浏览器,然后重新打开,再次进入该站点,您将不会登录。

  • 问题内容: 我对垃圾收集器在Java中的工作方式有一个大致的了解,但是我销毁对象的原因不是因为我关心释放内存,而是因为功能。我可以用一个例子更好地解释: 假设我正在制作涉及金钱的游戏。当某人从地面上捡起一个物体时,我想调用该物体的方法,该方法涉及为该人的钱包添加一个值。 之后发现,我不希望别人能够把它捡起来。换句话说,我不希望自己或任何其他程序能够不经意间拨打电话: 因此,在Bob拿起钱后,它的价

  • 问题内容: 我正在尝试正确注销管理员用户。这是我的功能: 基本上,一旦我对密码进行了身份验证,就将会话设置为有效(总共只有1个用户)。现在,当管理员点击注销时,我想销毁当前会话,并销毁cookie,以便他们不能只是使用浏览器中存储的会话cookie返回管理页面。但是我的代码不起作用。我点击注销,然后我可以直接导航回到管理页面。但是,如果我删除Cookie,则该功能非常完善。那么这里的cookie删

  • 我是ejbs的新手,我想知道有状态会话bean是否会被销毁。我在servlet中注入了一个有状态会话bean。即使在30分钟后,我看到豆子是活跃的。我使用jboss eap 6.0。我相信Http会话与有状态会话bean无关。我使Http会话无效,以确保Http会话与有状态会话bean无关。那么,如果我的应用程序有许多用户,并且对于每个用户,如果我创建一个新bean,我的服务器的性能就会下降。容器