0

买了 YShout 并且已经在我的网络服务器上运行了一段时间了。支持很长时间没有回复任何电子邮件。我不断收到杀死聊天框的反序列化错误。

错误:似乎有一个问题:unserialize() 在 86434 字节的偏移 65537 处出错。文件:filestorage.class.php 第 36 行。

这是第 36 行的函数。

function load() {
    if (($contents = $this->read($this->path)) == null)
    return $this->resetArray();
    return unserialize($contents);///////////line 36
}

这似乎是日志文件中生成错误消息的行,65537 似乎位于字符串中“uia:2:”中的“a”处。

i:251;a:6:{s:8:"nickname";s:7:"TestUser";s:7:"message";s:30:"when he's online ask him";s:9:"timestamp";d:1373857811.6403610706329345703125;s:5:"admin";b:0;s:3:"uia:2:{s:4:"info";a:1:{s:15:"latestTimestamp";i:-1;}s:5:"posts";a:0:{}}ip";s:12:"76.174.54.75";}}

不太确定 YShout 是如何工作的,但我现在每天不止一次收到此错误。我必须删除日志文件,然后 YShout 从头开始​​创建一个新日志,一切都很好。但是在我删除导致问题的日志之前,没有人可以使用聊天窗口。

理想的解决方案是解决这个问题并弄清楚发生了什么。次要解决方案是重命名导致错误的日志文件。这将导致 YShout 创建一个新的日志文件以供使用,并且我们将拥有包含错误消息的日志的历史记录。

4

1 回答 1

0

当我弄乱日志文件时,出现了相同的错误消息。如果您在消息中添加或删除字符,最终会出现此错误。但是更改字符不会造成任何麻烦。这意味着 YShout 将消息长度存储在日志文件中。

看看这一行:

s:30:"when he's online ask him";

's' 表示正在使用 30 个字符,但您的消息只有 24 个字符长。尝试将其更改为 24,问题应该得到解决。

于 2014-01-28T14:33:11.673 回答