【问题标题】:Codeigniter - PHP - unserialize(): Error at offset 185 of 411 bytesCodeigniter - PHP - unserialize():411 个字节的偏移量 185 处出错
【发布时间】:2013-07-16 01:42:57
【问题描述】:

您好,我在 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 = off 以及 magic_quotes_runtime = off;

我正在使用UTF-8 in Codeigniter, HTML and in all database tables and database itself

我也在 Codeigniter 中使用Session DB

不明白出了什么问题,可能是什么?

会话是否太大?它使用数据库来存储会话,所以我想知道它怎么会太大:(

我唯一可以强调的是我更新了会话数据库字段 userdata FROM TEXT 到 LONGTEXT ,但两种类型的错误仍然存​​在。

感谢任何帮助。

【问题讨论】:

  • 您的字符串长度在序列化数据中不正确。例如:s:11:"user_ps" 必须是 s:7:"user_ps"
  • @bystwn22 NB: the serialized key values are not real, i changed them just to show you what that returns. ;)
  • 我承认他们没问题(我的意思是真实值)

标签: php codeigniter session serialization


【解决方案1】:

我只是将会话表中的“user_data”字段从 TEXT 增加到 MEDIUMTEXT,它解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多