插入自定义对象后损坏Kohana会话

时间:2012-10-07 11:52:33

标签: session object kohana kohana-3 corrupt

描述

我正在尝试将名为ReviewHolder的自定义对象添加到会话中。这是在“审查”控制器中完成的。 ReviewHolder类包含在classes/controller/review.php文件中。我正在使用Kohana 3.2版。

代码

$session = Session::instance();
$reviewholder = $session->get('reviewholder');
if($reviewholder == null) {
    $session->set('reviewholder', new ReviewHolder());
}

问题

问题是我执行上面的代码后,会话被破坏,几乎整个网站都无法正常运行。这是每个页面上的错误消息:

Session_Exception [ 1 ]: Error reading session data.

奇怪的部分

从“查看”控制器加载的所有页面仍然正常运行!看起来上面的代码搞乱了应用程序中的每个其他会话......

调试

我已调试会话以查看是否使用以下代码正确设置了对象:

echo Debug::vars($session->get('reviewholder'));

这会正确显示对象,因此已在会话中设置。


有人可以帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

会话文件中的内容并不重要。

我所知道的是,您只能存储在会话中序列化的对象。

序列化后,您可以将其存储在会话中,并再次将其作为对象供以后使用。您可以反序列化序列化对象。

希望这有帮助!

答案 1 :(得分:0)

我发现在会话中存储自定义对象时,以下内容对我有用:

  1. 确保在PHP中正确设置了会话目录,即。目录存在,权限允许您的Web服务器写入目录

  2. 通过添加以下行来强制将对象的类加载到bootstrap.php中: require_once(Kohana :: find_file('classes','Library / MyClass'));

  3. 在这两个步骤之后,我不再看到会话损坏的异常