0

こんにちは、Codeigniter + nginx サーバーで奇妙なエラーが発生しました。

次のようなログ エラーが表示されます。

ERROR - 2013-07-17 15:01:22 --> Severity: Notice  --> unserialize(): Error at offset 185 of 411 bytes /system/libraries/Session.php 726

だから私はデータのシリアル化が何であるかを記録するために、このコードをSession.phpライブラリに入れました:

function _unserialize($data)
    {   

        log_message('error', var_export($data, true));

        $data = @unserialize(strip_slashes($data));

        if (is_array($data))
        {
            foreach ($data as $key => $val)
            {
                if (is_string($val))
                {
                    $data[$key] = str_replace('{{slash}}', '\\', $val);
                }
            }

            return $data;
        }

        return (is_string($data)) ? str_replace('{{slash}}', '\\', $data) : $data;
    }

これはログファイルにこれを返します:

ERROR - 2013-07-17 15:01:22 --> 'a:11:{s:7:"user_id";s:2:"93";s:14:"user_name";s:7:"Michael";s:13:"user_last";s:5:"Russa";s:10:"user_email";s:22:"moo@ail.com";s:13:"user_loc";s:12:"??????";s:13:"user_lat";s:10:"55.72420";s:14:"user_lon";s:10:"37.6484220";s:16:"user_grav";s:32:"7ef03623b352c9b62f6a642ef4b40434";s:11:"user_ps";s:3:"152";s:9:"beta_u";s:3:"yes";s:12:"is_mod";s:4:"true";}'
ERROR - 2013-07-17 15:01:22 --> Severity: Notice  --> unserialize(): Error at offset 185 of 411 bytes /project/system/libraries/Session.php 726

**`NB: the serialized key values are not real, i changed them just to show you what that returns.`**

私はphp.iniも制御しましmagic_quotes_rcp = offmagic_quotes_runtime = off;

私は使用してUTF-8 in Codeigniter, HTML and in all database tables and database itselfいます。

また、私はSession DBCodeigniterで使用しています

何が問題なのか理解できません。何が問題なのですか?

セッションが大きすぎますか? セッションを保存するためにデータベースを使用するので、どうすれば大きすぎるのか疑問に思っています:(

私が強調できる唯一のことは、セッションデータベースフィールド userdata FROM TEXT を LONGTEXT に更新したことですが、両方のタイプでエラーが持続します。

どんな助けでも感謝します。

4

1 に答える 1

1

セッションテーブルの「user_data」フィールドをTEXTからMEDIUMTEXTに増やしただけで、この問題は解決しました

于 2015-06-10T16:54:05.000 に答える