网上的解决方案:php
1. 报错场景:序列化字段中有中文,反序列化时有可能会出现报错。数据库
错误缘由:写入和取出数据库的时候,编码不一样,中文符号长度不一样,序列化中的长度就没法匹配。测试
解决办法:适合 php 5.5+编码
//使用正则将错误的长度修正,@param $str @return正确的序列化字符串字符串
preg_replace_callback('#s:(\d+):"(.*?)";#s',function($match){return 's:'.strlen($match[2]).':"'.$match[2].'";';},$str);io
测试依旧报错,并且并无写入库,不符合上面报错缘由-从库中读数。base64
将中文排除后再测试一次。function
2. 忽然想起来个人缘由是,由于将file读成了base64,特别长,因此会报这个错。 file
mark一下。序列化