PHP 升级5.6版本后遇到的问题

来源:互联网 发布:淘宝买家改差评 编辑:程序博客网 时间:2024/05/20 01:10

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。

$ch = curl_init();$data = array(    ‘i’ => ‘@/Users/zmx/Desktop/demo.jpg’,    ‘q’ => 80,    ‘t’ => ‘160×160′,);curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);curl_setopt($ch, CURLOPT_URL,  $upload_api);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt($ch, CURLOPT_HEADER, 1);$result = curl_exec($ch);curl_close($ch);

或者改用 CURLFile 类 http://php.net/manual/en/class.curlfile.php


mysql_connect 连接数据库失败

PHP5.5以后,mysql扩展已经被移除,现在只能使用mysqli和pdo连接mysql数据库。

解决方案: 将mysql扩展换为mysqli或者pdo以兼容新版PHP。


0 0
原创粉丝点击