【问题标题】:failed to destroy session object [duplicate]未能销毁会话对象 [重复]
【发布时间】:2013-09-21 20:12:41
【问题描述】:

我发现的有关此错误消息的所有内容都表明,要么没有会话开始,要么我没有权利,不幸的是,这两种情况都不是。

我的会话处于活动状态,当我尝试在我的 logout 方法中销毁它时,我得到了

warning: session_destroy(): session object destruction failed

我的症状似乎很像this 问题中的症状,遗憾的是,这个问题没有答案。此外,当我尝试注销几次时,它会成功破坏会话。有时它需要 2 次注销有时 5 它永远不会相同的数量,但它也不会从第一次尝试中破坏它。我觉得这很尴尬,有人能给我一些建议吗?

【问题讨论】:

  • @alfasin 加油,你是认真的吗?你有没有读过这个问题。我明确表示stackoverflow.com/questions/8549757/… 中给出的解决方案都不适用于我的情况
  • 您是否尝试过先取消设置会话?通常 session_destroy 应该可以工作,但你总是可以先尝试取消设置
  • @jonasvermeulen 奇怪的是,我使用这个系统已经有半年多了,而且它刚刚开始给我这种垃圾,而我没有改变任何东西。取消设置并不是一个真正的选择,因为除了它不是一个很好的解决方案之外,我还不需要按规则显示任何错误消息:(
  • @jonasvermeulen 另外,刚刚尝试取消设置,它也没有这样做O.o。编辑:实际上确实如此,但我必须手动刷新。这是 session_destroy() 错误的结果,我必须避免绝对强制
  • @php_nub_qq,确实很奇怪,也许只是尝试重新启动您的服务器之类的。将清除您的 php 会话的缓存。如果这没有帮助,我自己不知道任何其他解决方案

标签: php session


【解决方案1】:

试试这个解决方案:

<?php 

session_start(); 
$_SESSION = array(); 

if (isset($_COOKIE[session_name()])) { 
   setcookie(session_name(), '', time()-42000, '/'); 
} 
session_destroy(); 
?>

【讨论】:

    【解决方案2】:

    我刚刚发现问题出在哪里,看起来非常奇怪和不合逻辑。

    我的注销按钮是一个锚标签,我正在玩我的网站测试东西,我开始点击标签来查看我可以在普通页面中关注哪些元素。我注意到菜单通道中的所有按钮都可以聚焦,除了注销按钮,这是由于缺少 href 属性,所以我添加了一个空的 href 属性,以便它可以通过 Tab 键聚焦。显然,一个空的 href 标签重定向到根目录(我猜这是由于我使用了 &lt;base&gt; 标签)。所以每次我点击注销按钮时,我都会被重定向到主页(一开始我没有注意到这一点,因为我实际上在那个页面上,哈哈,对了),这显然妨碍了从 ajax 销毁会话通过单击相同的按钮发送的请求。我的假设是 php 未能销毁会话对象,因为它正在使用中,加载我重定向到的页面,有时注销工作,因为重定向很慢,并且 ajax 调用在 php 开始创建之前及时执行新页面。

    我已经删除了 href 属性,现在一切正常。我想请你评论我是对还是错,并可能给出正确答案,谢谢!

    【讨论】:

    • 我认为我的问题可能是访问会话文件并崩溃的进程。或者也许我的文件系统已损坏......但我再也没有遇到过这个问题,所以我猜你的问题不同
    • 刚刚遇到了同样的问题。试图注销并设置了 href 属性。删除属性解决了问题。
    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 2017-10-13
    • 2014-02-09
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多