0

YShout を購入し、しばらくの間、私の Web サーバーで実行しています。サポートは長い間メールに応答していません。チャット ボックスを強制終了するシリアル化解除エラーが発生し続けます。

エラー: 問題があるようです: 86434 バイトのオフセット 65537 での unserialize() エラー。ファイル: 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 がどのように機能するかはよくわかりませんが、このエラーが 1 日に 1 回以上発生しています。ログファイルを削除する必要があり、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 に答える