thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决 一.总结 一句话总结:清缓存就好了,所以框架有问题可以考虑清缓存 清缓存 1.thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes的原因是什么? phpStorm改文件名自动更新了缓存 并且自动更新的缓存内容不对 出错原因:移过来改名字的时候phpStorm的自动更新引用更新了缓存(我看的清清楚楚,没截到…
使用unserialize函数将数据储存到数据库的时候遇到了这个报错, 后来发现是将gb2312转换成utf-8格式之后, 每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题, 所以需要使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍,代码如下: function mb_unserialize($serial_str) { $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen(…
使用unserialize函数将数据储存到数据库的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题,所以需要使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍,代码如下: function mb_unserialize($serial_str) { $out = preg_replace_callback( '!s:(\d+):"(.*?)";!s', function($r)…
网上的解决方案: 1. 报错场景:序列化字段中有中文,反序列化时有可能会出现报错. 错误原因:写入和取出数据库的时候,编码不同,中文符号长度不同,序列化中的长度就无法匹配. 解决办法:适合 php 5.5+ //使用正则将错误的长度修正,@param $str  @return正确的序列化字符串 preg_replace_callback('#s:(\d+):"(.*?)";#s',function($match){return 's:'.strlen($match[2]).':&qu…
数据库有个列是数组序列化后存到数据库的,取出来得反序列化, php想要把数组保存到数据库里,有两种序列化方式,分别是: //php系统序列化 $b = serialize($a);    //序列化数组$a,得到字符串$b,存到数据库 $a = unserialize($b);    //从数据库取出来,反序列化字符串$b,得到数组$a //使用json序列化 $b = json_encode($a);    //序列化数组$a,生成字符串$a = json_decode($b);    //反…
$a = 'a:1:{i:0;s:12:"1,10,93,";}'; var_dump( unserialize( $a ) ); 运行之后页面上显示Notice: unserialize(): Error at offset 11 of 26 bytes in H:\wamp\www\test\test.php on line 8( 注意:在11 unserialize()偏移26字节的错误 ) 解决方法:使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍 $a = 'a:…
有两个原因(据我所知)会导致这个问题: (1) 字符串本身的问题 (2)字符编码的问题. 你unserialize的字符串的编码和文件本身的编码不一致.将文件编码改成和字符串一样的编码.这种问题比较隐蔽,如果你确认不是字符串本身的问题,请尝试用这种解决方案…
简述 unserialize(): Error at offset 533 of 1857 bytes 发现问题 dump一下出错的位置的变量,可以发现是缓存出了问题,改了名字的文件的路径对不上 解决--清缓存 所有框架代码在别人那能运行,到自己这就不行了,况且环境是一致的,这是可以考虑清楚一下缓存 ThinkPHP5框架直接删除 runtime文件夹下所有文件然后重新运行项目 总结 本次问题主要是因为在git仓库中上传了runtime目录文件,所以导致在重新拉去项目的时候会出现unserial…
thinkphp中 Illegal offset type异常 一.错误提示 二.解决思路 1.看出错提示中的函数为assign函数,那说明是我们在从控制器assign数据到页面的部分出现了错误 2.看if选择结构的判断语句,表达的意思如下 因为第二个参数($value值)一定要是数组,所以看传递过来的第一个参数($name键)是否是数组, 如果是数组,那就合并键和值的两个数组的值, 否则就将($value值)做为值,($name键)作为键组成数据 3.array_merge() 将一个或多个数…
关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法. 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改动只是影响了汉字的显示,对Object序列化和反序列化并没有影响,但是网络上有介绍说是因为编码的问题,这个要看大家具体的问题了. 解决办法,既然在serialize时没有问题,那么我们就主要考虑是否是unserialize的时候出现了问题,我采取的措施如下: 对要反…