描述
我正在尝试将名为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'));
这会正确显示对象,因此已在会话中设置。
有人可以帮助我吗?谢谢!
答案 0 :(得分:1)
会话文件中的内容并不重要。
我所知道的是,您只能存储在会话中序列化的对象。
序列化后,您可以将其存储在会话中,并再次将其作为对象供以后使用。您可以反序列化序列化对象。
希望这有帮助!
答案 1 :(得分:0)
我发现在会话中存储自定义对象时,以下内容对我有用:
确保在PHP中正确设置了会话目录,即。目录存在,权限允许您的Web服务器写入目录
通过添加以下行来强制将对象的类加载到bootstrap.php中: require_once(Kohana :: find_file('classes','Library / MyClass'));
在这两个步骤之后,我不再看到会话损坏的异常