PHP版本从5.4升级到5.6版本以后,有一些常见的问题,提出来跟大家分享下:
json_decode 失败
5.6后版本的PHP,JSON处理数据时,遇到非UTF-8特殊字符,会直接返回false,之前则是会将特殊字符转化为NULL。这样会导致JSON无法解压/压缩数据成功。
解决方案: 在JSON处理之前,先遍历数据,统一将编码转为UTF-8。
mcrypt_encrypt 加密失败
当参数密钥key长度大于8位时,函数返回false,PHP 5.6版本后,不再接受无效长度的 key and iv 参数
如果参数密钥key长度大于8位,mcrypt_decrypt() 函数会产生警告并且返回 FALSE,导致加密失败。
解决方案: 将密钥长度截取到8位,这样能兼容5.6后的PHP版本。
curl模拟post上传文件不能通过@文件来进行上传了
5.5之前都可以通过@/tmp/test.jpg这样的方式直接上传,5.5之后,CURLOPT_SAFE_UPLOAD默认为true,不能通过@文件上传了。
解决方案: 将curl句柄 CURLOPT_SAFE_UPLOAD 设置为false。