session_start之后的Session :: instance() - Kohana(v.3.2)

Tam*_*Pap 2 php session exception kohana

我正在使用Kohana的Session类没有问题,但现在我面临一个特殊的情况.在我的脚本中,我必须加载一个供应商类,在某个地方调用session_start.

稍后在代码中我需要调用Session :: instance(),这导致Error reading session data.异常.

我不能修改供应商代码(只是具体它是facebook php sdk,我不想修改它),我必须Session::instance()稍后调用.

如何解决这种情况?

你必须知道,这很简单

<?php
session_start();
Session::instance();
?>
Run Code Online (Sandbox Code Playgroud)

会产生同样的例外.我认为这是Kohana 3.2中的一个错误,但我需要以某种方式欺骗它.

要了解有关该Session课程的更多信息,请查看以下内容:http://kohanaframework.org/3.2/guide/api/Session

顺便说一下,我正在使用默认的本机会话类.

Man*_*ras 5

正如Alex Mihai指出的那样,我们可以使用Session :: instance()中的session id参数重新启动它.

您获得的异常是会话仍在运行,您无法恢复正在运行的会话.所以你必须先关闭它.

试试这个:

// 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);
Run Code Online (Sandbox Code Playgroud)

它也可能不是最优雅的解决方案,但这对我有用,我希望它会对你有所帮助.