我今天面临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是一个被许多人重新使用的库。
听起来你检查了主分支(2af859ff76)-刚刚检查过,它确实有错误。你应该:
- 查看其中一个发布分支,如1.3表
- 与作者一起记录此错误
正如手册所建议的"session_write_close--写入会话数据并结束会话",因此您得到了公平的警告。因为会话已经关闭。
仅供参考的
您需要session_start();在你摧毁它之前
另外,header("Location…")正在发送header,因此之后无法关闭会话。在关闭会话后进行重定向