我在使用 Kohana 的 Session 类时没有问题,但现在我遇到了一个特殊情况。 在我的脚本中,我必须加载一个供应商类,它在某处调用 session_start。
稍后在代码中我需要调用 Session::instance(),这会导致 Error reading session data. 异常。
我无法修改供应商代码(具体来说是 facebook php sdk,我不想修改它),我必须调用 Session::instance() 稍后。
如何解决这种情况?
你必须知道,一个简单的
<?php
session_start();
Session::instance();
?>
将产生相同的异常。 我认为这是 Kohana 3.2 中的错误,但我需要以某种方式欺骗它。
要了解有关 Session 类的更多信息,请查看:http://kohanaframework.org/3.2/guide/api/Session
顺便说一句,我使用的是默认的 native session 类。
请您参考如下方法:
正如 Alex Mihai 指出的那样,我们可以在 Session::instance() 中使用 session ID 参数来重新启动它。
您得到的异常是 session 仍在运行,您无法恢复正在运行的 session 。所以你必须先关闭它。
试试这个:
// Start session
session_start();
// Store session id and close the session
$sessionId = session_id();
session_write_close();
// Then we can restore the session by using the session id
// and the Session class from Kohana
Session::Instance(Session::$default, $sessionId);
它可能也不是最优雅的解决方案,但这对我有用,我希望它能对你有所帮助。


