【问题标题】:Warning: session_destroy(): Trying to destroy uninitialized session with phpCas警告:session_destroy():试图用 phpCas 销毁未初始化的会话
【发布时间】:2013-07-08 08:58:33
【问题描述】:

我今天遇到了 phpCas 库 https://wiki.jasig.org/display/CASC/phpCAS 的问题。

问题如下,当我尝试使用某些注销功能时,我收到了消息

Warning: session_destroy(): Trying to destroy uninitialized session

在快速浏览了 phpCas 的库代码后,我设法找出问题出在哪里,这是一个注销功能的 sn-p:

session_write_close();
header('Location: '.$cas_url);
phpCAS::trace("Prepare redirect to : ".$cas_url);
session_unset();
session_destroy();

那里的问题似乎是session_write_close() 实际上关闭了会话然后session_destroy() 无法工作。

试图将session_write_close() 放在评论中并像魅力一样工作,但它导致了两个问题:

  • 问题真的来自那里吗?还是应该有效?

  • 如果问题真的来自那里,为什么它在那里却没有人抱怨?认为 phpCas 是许多人使用的知名库。

【问题讨论】:

  • 为什么你的问题中有 symfony2 标签?因为 sf2 不处理这样的会话。
  • 因为我使用的是 symfony2 并认为这个 bug 可能是相关的(即使看起来没有关系)

标签: php symfony cas phpcas


【解决方案1】:

听起来您检查了主分支 (2af859ff76) - 刚刚检查过,其中确实有错误。你应该:

  • 查看一个发布分支,例如 1.3-stable
  • 与作者记录此错误

【讨论】:

  • 非常感谢。认为这可能是他们代码中的一个错误,然后最后一次更新是至少一个月前而且没有人抱怨的事实让我觉得我应该是错的。我认为phpCas更受欢迎。
【解决方案2】:

正如手册所建议的那样,“session_write_close — 写入会话数据并结束会话”所以你得到了公平的警告。因为会话已经关闭。

FYI

【讨论】:

  • 我不是在问题中说了吗?
  • 是的,所以删除 session_write_close()
  • 你读过这个问题吗?代码不是我的,它来自 phpCas 库...
【解决方案3】:

你需要 session_start();在你摧毁它之前

header("Location ...) 也在发送标头,因此您无法在之后关闭会话。在关闭会话后执行重定向

【讨论】:

  • 你有没有花时间阅读已经给出的答案和 cmets?
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2013-06-26
  • 2023-03-19
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多