unserialize() [function.unserialize]: Error at offset ecshop 原因是字符串太大了。

转载 2015年07月09日 17:53:29
/**
 * 读结果缓存文件
 *
 * @params  string  $cache_name
 *
 * @return  array   $data
 */
function read_static_cache($cache_name)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    static $result = array();
    if (!empty($result[$cache_name]))
    {
        return $result[$cache_name];
    }
    $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
    if (file_exists($cache_file_path))
    {
        include_once($cache_file_path);
        $result[$cache_name] = $data;
        return $result[$cache_name];
    }
    else
    {
        return false;
    }
}

/**
 * 写结果缓存文件
 *
 * @params  string  $cache_name
 * @params  string  $caches
 *
 * @return
 */
function write_static_cache($cache_name, $caches)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
    $content = "<?php\r\n";
    $content .= "\$data = " . var_export($caches, true) . ";\r\n";
    $content .= "?>";
    file_put_contents($cache_file_path, $content, LOCK_EX);
}




Notice: unserialize() [function.unserialize]: Error at offset解决方法

报错信息:
Notice: unserialize() [function.unserialize]: Error at offset 159 of 647 bytes in \eshop\includes\lib_common.php on line 224

lib_common.php的224行
  1. $cfg = unserialize($GLOBALS['_CFG']['integrate_config']);
复制代码


是将会员整合配置信息反序列化的操作,产生报错的原因是因为序列化的字符串格式不对,无法正常反序列化,产生这种情况的时候很少,目前只在UTF-8编码格式下发现。

解决方法,在lib_common.php大约604行找到
  1.         if (empty($arr['integrate_code']))
  2.         {
  3.             $arr['integrate_code'] = 'ecshop'; // 默认的会员整合插件为 ecshop
  4.         }
  5.         write_static_cache('shop_config', $arr);
复制代码


修改为
  1.         if (empty($arr['integrate_code']))
  2.         {
  3.             $arr['integrate_code'] = 'ecshop'; // 默认的会员整合插件为 ecshop
  4.         }
  5.         if (!empty($arr['integrate_config']) && EC_CHARSET == 'utf-8')
  6.         {
  7.             $arr['integrate_config'] = preg_replace('!s:(\d+):"(.*?)";!se',"'s:'.strlen('$2').':\"$2\";'",str_replace(' ','',$arr['integrate_config']));
  8.         }
  9.         write_static_cache('shop_config', $arr);
复制代码


修改完成后,进入后台清除缓存。

注意:这个只能用在lib_common.php 224行的这个错误上,如果不是请不要随便修改程序。如果在使用中遇到问题可通过站内信与我联系。

PHP出现Notice: unserialize() [function.unserialize]: Error at offset问题的解决方案

今天的用PHP的时候无意的出现了用unserialize()函数转换老是返回false,我确认我的字符串是没错的,测试了很多次还是一样,没办法,启用了error_reporting(E_ALL)启用错...
  • zqtsx
  • zqtsx
  • 2013年12月23日 15:53
  • 2723

Notice: unserialize() [function.unserialize]: Error at offset解决方法

 报错信息: Notice: unserialize() [function.unserialize]: Error at offset 159 of 647 bytes in \eshop\...
  • accress
  • accress
  • 2014年01月02日 10:41
  • 1086

ecshop Notice: unserialize() includes\cls_session.php on line 163

Notice: unserialize() [function.unserialize]: Error at offset 46 of 70 bytes inD:\wamp\apps\ECShop_...
  • zhangfeng1133
  • zhangfeng1133
  • 2015年07月09日 15:42
  • 704

unserialize(): Error at offset出现的原因分析以及解决方法

unserialize(): Error at offset出现的原因分析以及解决方法 2016-09-10分类:实用知识阅读(5590) 评论(0) 在PHP的unserialize函数使...
  • zdw19861127
  • zdw19861127
  • 2016年10月18日 14:48
  • 940

unserialize(): Error at offset 0 of 96 bytes出现的原因分析以及解决方法

出现问题: 从数据库中取出数据后进行反序列化后,php报错  unserialize(): Error at offset 0 of 96 bytes; 分析原因:英文数据中含有中文字符串,所以我们...
  • glx490676405
  • glx490676405
  • 2018年01月12日 10:39
  • 405

PHP中Notice: unserialize(): Error at offset 109 of 615 bytes in on line 的解决方法

今天在集成UCenter通信时偶然遇到unserialize(): Error at offset 109 of 615 bytes,查找资料得到结果 使用unserialize函数将数据储存到数据...
  • baidu_19473529
  • baidu_19473529
  • 2016年12月29日 17:17
  • 2394

php serialize()和unserialize()的一个坑

有个业务需求
  • u014604026
  • u014604026
  • 2014年09月17日 10:43
  • 2069

长度问题:php函数unserialize数据返回false问题分析

unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的问题表现情况如下:emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,读取...
  • CrazyStarbnu
  • CrazyStarbnu
  • 2011年06月24日 14:04
  • 642

ecshop unserialize

1. $row['gift'] = unserialize($row['gift']); 把ecshop数据库中的序列化的值,转换成php值...
  • fgdfgasd
  • fgdfgasd
  • 2013年11月27日 15:14
  • 470

PHP unserialize出现Error at offset错误

php //我的页面是UTF-8编码的结果为:a:2:{s:2:"en";s:21:"http://www.phpddt.com";s:2:"cn";s:6:"教程";}//我的页面是ANSI编码的...
  • drice888888
  • drice888888
  • 2016年04月06日 14:23
  • 151
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unserialize() [function.unserialize]: Error at offset ecshop 原因是字符串太大了。
举报原因:
原因补充:

(最多只允许输入30个字)