0

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

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

Warning: session_destroy(): Trying to destroy uninitialized session

在快速浏览了 phpCas 的库代码后,我设法找出问题出在哪里,这里是一个注销函数的片段:

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 是许多人使用的知名库。

4

3 回答 3

1

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

  • 查看发布分支之一,例如 1.3-stable
  • 与作者记录此错误
于 2013-07-11T20:44:29.927 回答
0

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

供参考

于 2013-07-08T09:04:53.670 回答
0

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

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

于 2013-07-08T09:20:30.047 回答