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

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

  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来替代的方案,可查看手册,手册中有人写到:

  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来转换,就可以解决这个问题了,我们项目中的截图如下:

php7.0 出现 curl_setopt(): Disabling safe uploads is no longer supported in 报错!的更多相关文章

  1. spingboot2.0外部引入xml配置文件时找不到文件等报错

    之前的项目可以启动,后面不知道为什么都不行了,报错如下: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bindin ...

  2. ubuntu16.0.4下修改MySQL的data目录之mysqld启动报错

    由于需要更换MySQL的data目录,更改完成后启动报错如下: apparmor="DENIED" operation="mknod" profile=&quo ...

  3. vue2.0 在页面中使用process获取全局路径的时候 报错 process is not defined

    如果是刚配置好的全局变量需要 重新启动一下vue才能通过proccess.env.xxx 获取到 如果想在html中使用 需要在data中声明一个变量 然后在vue生命周期中 将process.env ...

  4. thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)

    两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_b ...

  5. 解决从源码编译ncurses6.0编译lib_gen.c报错的问题

    直接从官网的源码编译时,会提示报错: gcc -DHAVE_CONFIG_H -I. -I../include -D_GNU_SOURCE -DNDEBUG -O2 --param max-inlin ...

  6. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0

    转自https://blog.csdn.net/lovesomnus/article/details/49512777 在maven中央库中查找ojdbc,发现最新的版本是10.2.0.4.0,然后在 ...

  7. 初次安装hive-2.1.0启动报错问题解决方法

    首次安装hive-2.1.0,通过bin/hive登录hive shell命令行,报错如下: [hadoop@db03 hive-2.1.0]$ bin/hive which: no hbase in ...

  8. 【问题】报错[CRITICAL] Rendering SLS 'base:minions.install' failed: Jinja variable 'list' object has no element 0

    1.报错[CRITICAL] Rendering SLS 'base:minions.install' failed: Jinja variable 'list' object has no elem ...

  9. django2.0集成xadmin0.6报错集锦

    1.django2.0把from django.core.urlresolvers修改成了django.urls 报错如下: 1 2 3   File "D:\Envs\django-xad ...

随机推荐

  1. Ugly Number II -- LeetCode

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...

  2. luogu P3834 【模板】可持久化线段树 1(主席树)

    题解真的是越写越懒 // luogu-judger-enable-o2 #include<cstdio> #include<algorithm> using std::sort ...

  3. Lucas定理模板【bzoj2982】【combination】

    (上不了p站我要死了,侵权度娘背锅) Description LMZ有n个不同的基友,他每天晚上要选m个进行[河蟹],而且要求每天晚上的选择都不一样.那么LMZ能够持续多少个这样的夜晚呢?当然,LMZ ...

  4. Java面向对象内测

    功能要求 开发基于控制台的试题信息管理系统.具体要求如下: (1)显示试题信息管理系统主菜单,包括: 1)列出所有试题信息 2)按科目查询 3)按题干查询 4)添加试题 5)删除试题 6)退出系统 p ...

  5. Array方法介绍

    Array 是抽象基类,抽象基类不能创建它的对象 定义的数组: int[,] myArr4=new int[2,3]{{1,2,3},{4,5,6}}; int[, ,] myArr3 = new i ...

  6. SQL 存储过程入门(事务)

    本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果 ...

  7. easyui 放大镜图标

    iconCls:search 对应的 easyui的查询图标忒丑 想用放大镜图标 iconCls:zoom 找半天找到放大镜图标的 然后去icon.css文件中查 发现这个样式就叫zoom.

  8. 用DotSpatial下载谷歌瓦片图并展示到地图控件上 【转】

    http://blog.csdn.net/caoshiying/article/details/51991647 上一篇文章讲解如何加载各地图的WMS地图服务.虽然不涉及到瓦片,但是每次地图刷新都要请 ...

  9. Jsp中如何在<c:forEach>标签内获取集合的长度

    利用jstl标签functions的prefix属性的length属性值 1.首先在jsp页面导入jstl function标签 <%@ taglib prefix="fn" ...

  10. Mybatis通用分页

    分页分为真分页和假分页,而 MyBatis 本身没有提供基于数据库方言的分页功能,而是基于 JDBC 的游标分页,很容易出现性能问题.网上提供的一个解决方案感觉还不错,是基于 MyBatis 本身的插 ...