thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决

一、总结

一句话总结:清缓存就好了,所以框架有问题可以考虑清缓存

清缓存

1、thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes的原因是什么?

phpStorm改文件名自动更新了缓存 并且自动更新的缓存内容不对

出错原因:移过来改名字的时候phpStorm的自动更新引用更新了缓存(我看的清清楚楚,没截到图),所以导致了错误

2、学thinkphp框架及其它框架很好且可行的措施是什么?

按着框架运行流程打印中间变量

按着框架运行流程,打印中间变量,肯定可以学好框架,毕竟排系统错误的时候就是这么排的

二、清缓存就好了

出现的原因应该是改变了文件名,但是缓存自动更新(我用的phpstorm自动更新相关文件)的不对,所以导致错误,所以清理一下缓存就好了

出错原因:移过来改名字的时候phpStorm的自动更新引用更新了缓存(我看的清清楚楚),所以导致了错误

报错示意图

并且,dump一下出错的位置的变量,也可以发现是缓存出了问题,改了名字的文件的路径对不上

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

参考:unserialize(): Error at offset 0 of 96 bytes出现的原因分析以及解决方法
https://blog.csdn.net/glx490676405/article/details/79041405

出现问题: 从数据库中取出数据后进行反序列化后,php报错 unserialize(): Error at offset 0 of 96 bytes;

分析原因:英文数据中含有中文字符串,所以我们就可以想到编码的问题,serialize()函数对在不同编码下对中文的处理结果是不一样的。

再讲gbk转换成utf8的格式后,每个中文的编码数从2个会增加到3个,所以会导致反序列化的时候判断字符长度出现问题。

解决方法 : 使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍

具体代码:php5.5以下 :


function mb_unserialize($str) {
$out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $str );
return unserialize($out);
}

但是由于PHP本身 /e模式的漏洞,php5.5+,已经废弃了这种用法

PHP 5.5+

function mb_unserialize($str) {
return preg_replace_callback('#s:(\d+):"(.*?)";#s',function($match){return 's:'.strlen($match[]).':"'.$match[].'";';},$str);
}

 

thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决的更多相关文章

  1. [php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法

    使用unserialize函数将数据储存到数据库的时候遇到了这个报错, 后来发现是将gb2312转换成utf-8格式之后, 每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问 ...

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

    使用unserialize函数将数据储存到数据库的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题, ...

  3. [yii\queue\Queue] [10] unknown job (attempt: 1, PID: 31167) is finished with error: yii\base\ErrorException: unserialize(): Error at offset 1922 of 65535 bytes

    网上的解决方案: 1. 报错场景:序列化字段中有中文,反序列化时有可能会出现报错. 错误原因:写入和取出数据库的时候,编码不同,中文符号长度不同,序列化中的长度就无法匹配. 解决办法:适合 php 5 ...

  4. unserialize():Error at offset 0 of 96 bytes是什么意思

    数据库有个列是数组序列化后存到数据库的,取出来得反序列化, php想要把数组保存到数据库里,有两种序列化方式,分别是: //php系统序列化 $b = serialize($a);    //序列化数 ...

  5. unserialize() [function.unserialize]: Error at offset

    $a = 'a:1:{i:0;s:12:"1,10,93,";}'; var_dump( unserialize( $a ) ); 运行之后页面上显示Notice: unseria ...

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

    有两个原因(据我所知)会导致这个问题: (1) 字符串本身的问题 (2)字符编码的问题. 你unserialize的字符串的编码和文件本身的编码不一致.将文件编码改成和字符串一样的编码.这种问题比较隐 ...

  7. ThinkPHP5中出现unserialize()报错

    简述 unserialize(): Error at offset 533 of 1857 bytes 发现问题 dump一下出错的位置的变量,可以发现是缓存出了问题,改了名字的文件的路径对不上 解决 ...

  8. thinkphp中 Illegal offset type异常

    thinkphp中 Illegal offset type异常 一.错误提示 二.解决思路 1.看出错提示中的函数为assign函数,那说明是我们在从控制器assign数据到页面的部分出现了错误 2. ...

  9. Error at offset之反序列化

    关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法. 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: AN ...

随机推荐

  1. BeautifulSoup 模块详解

    BeautifulSoup 模块详解 BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后遍可以使用他提供的方法进行快速查找指定元素,从而使得在HT ...

  2. 图片上传插件:webuploader

    官网链接:https://github.com/fex-team/webuploader

  3. 一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.

    一.虚拟环境 ''' 解决版本共存 1. 用pycharm选择File点击NewProject然后选择virtualenv创建一个纯净环境 2. 打开下载的目录将venv文件夹下的所有文件(纯净的环境 ...

  4. 前端 --- 7 Bootstrop框架

    一.基本结构 1.下载地址   官方地址:https://getbootstrap.com 中文地址:http://www.bootcss.com/ 2.HTML基本搭建结构 <!DOCTYPE ...

  5. if语句学习

    #print("您好,我叫周星驰") ''' x=1+2+3 print(x*4) print(x**x) a=input("请输入相应的数字a") a=int ...

  6. linux基础之条件测试

    关键词: 数值测试 字符串测试 文件测试 测试命令有三种方式: test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]] 注意:EXPRESSION前后有空白字符 ...

  7. mySql 数据库设计原则

    mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...

  8. jsp的九大内置对象及作用

    内置对象名          类型                                   request           HttpServletRequest             ...

  9. Execl矩阵如何转化成Pajek的net文件

    在科研中我们有时会把把execl矩阵利用Ucinet.Pajek等可视化软件进行画图,而想要把execl矩阵转化为 Pajek可识别的文件-->net文件令很多初学者头疼不已,本文将做详细介绍. ...

  10. HDU 4301 Divide Chocolate(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4301 题意: 有一块n*2大小的巧克力,现在某人要将这巧克力分成k个部分,每个部分大小随意,问有多少种分法. 思 ...