【问题标题】:Corrupt Kohana session after inserting a custom object插入自定义对象后损坏 Kohana 会话
【发布时间】:2012-10-07 11:52:33
【问题描述】:

说明

我正在尝试将名为 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.

奇怪的部分

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

调试

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

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

这显示对象正确,所以它已经在会话中设置了。


有人可以帮我吗?谢谢!

【问题讨论】:

  • 会话文件里面有什么?

标签: session object kohana kohana-3 corrupt


【解决方案1】:

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

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

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

希望这会有所帮助!

【讨论】:

  • 谢谢!使用 serialize()deserialize() 函数工作得很好。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2016-01-28
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多