• php7.0 出现 curl_setopt(): Disabling safe uploads is no longer supported in 报错!


    项目换成php7.0,进行了测试,使用curl时,出现:

    curl_setopt(): Disabling safe uploads is no longer supported in xxx。定位到代码行:

    [php] view plain copy
     
    1. //5.6版本兼容  
    2. if (ver_compare(phpversion(), '5.6') >= 0) {  
    3.     curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);  
    4. }  

    所有问题都是因为 CURLOPT_SAFE_UPLOAD 这个选项。

    1.查看手册发现,5.50添加该选项,默认值为false。5.6之后,默认值为true,这里另其为false。

    2.手册上并未更新文档,7.0以后,不支持禁用该选项,所以导致了我们升级到7.0后,一直报错!

    直接不用使用该选项了,网上有个解决方案是,并没有多大意义:

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    上面的解决方法不合理,又找了点资料

    php5.6关于curl以@方式上传文件的变化及解决七牛上传时报file is not specified in multipart的问题

    上面的文章就提到了这个问题,但是针对的是php5.6

    7.0后,curl不支持设置 CURLOPT_SAFE_UPLOAD设置为false,只能是true。但是提供了使用 CURLFile来替代的方案,可查看手册,手册中有人写到:

    [php] view plain copy
     
    1. if(is_array($postfields) == true)  
    2. {  
    3.     // Check each post field  
    4.     foreach($postfields as $key => $value)  
    5.     {  
    6.         // Convert values for keys starting with '@' prefix  
    7.         if(strpos($value, '@') === 0)  
    8.         {  
    9.             // Get the file name  
    10.             $filename = ltrim($value, '@');  
    11.             // Convert the value to the new class  
    12.             $postfields[$key] = new CURLFile($filename);  
    13.         }  
    14.     }  
    15. }  
    16. curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);  

    发现传输的post中有以 '@' 开头的文件,使用new CURLFile() 来转换,然后就可以不用设置 curlopt_safe_upload为false了。这个是5.5以后才支持的。

    为了兼容性,可以7.0以前,设置为curlopt_safe_upload=false,7.0后,发现@,进行curlfile来转换,就可以解决这个问题了,我们项目中的截图如下:

  • 相关阅读:
    [Python3网络爬虫开发实战] 3.1.3-解析链接
    pusher-http-go
    gopush-cluster 架构
    消息队列 redis vs nsq
    redis资料
    golang+websocket
    golang之flag.String
    Linux环境下安装mysql
    golang版的crontab
    golang实现wav文件转换为mp3文件
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8324350.html
Copyright © 2020-2023  润新知