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。定位到代码行:
- //5.6版本兼容
- if (ver_compare(phpversion(), '5.6') >= 0) {
- curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
- }
所有问题都是因为 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来替代的方案,可查看手册,手册中有人写到:
- if(is_array($postfields) == true)
- {
- // Check each post field
- foreach($postfields as $key => $value)
- {
- // Convert values for keys starting with '@' prefix
- if(strpos($value, '@') === 0)
- {
- // Get the file name
- $filename = ltrim($value, '@');
- // Convert the value to the new class
- $postfields[$key] = new CURLFile($filename);
- }
- }
- }
- 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 报错!的更多相关文章
- spingboot2.0外部引入xml配置文件时找不到文件等报错
之前的项目可以启动,后面不知道为什么都不行了,报错如下: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bindin ...
- ubuntu16.0.4下修改MySQL的data目录之mysqld启动报错
由于需要更换MySQL的data目录,更改完成后启动报错如下: apparmor="DENIED" operation="mknod" profile=&quo ...
- vue2.0 在页面中使用process获取全局路径的时候 报错 process is not defined
如果是刚配置好的全局变量需要 重新启动一下vue才能通过proccess.env.xxx 获取到 如果想在html中使用 需要在data中声明一个变量 然后在vue生命周期中 将process.env ...
- thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)
两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_b ...
- 解决从源码编译ncurses6.0编译lib_gen.c报错的问题
直接从官网的源码编译时,会提示报错: gcc -DHAVE_CONFIG_H -I. -I../include -D_GNU_SOURCE -DNDEBUG -O2 --param max-inlin ...
- 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,然后在 ...
- 初次安装hive-2.1.0启动报错问题解决方法
首次安装hive-2.1.0,通过bin/hive登录hive shell命令行,报错如下: [hadoop@db03 hive-2.1.0]$ bin/hive which: no hbase in ...
- 【问题】报错[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 ...
- django2.0集成xadmin0.6报错集锦
1.django2.0把from django.core.urlresolvers修改成了django.urls 报错如下: 1 2 3 File "D:\Envs\django-xad ...
随机推荐
- Android APP打包时,出错:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic).....
"app_name" is not translated in "af" (Afrikaans), "am" (Amharic), &quo ...
- 【视频】 Linux高级程序设计01.2开发平台及Linux环境限制
[课程笔记] Linux环境限制 遵循规范,使用现有资源,明确系统限制,增量开发. (1)规范问题 编码的规范,让程序更易读.Linux编码规范. “见着如意”:变量,函数命名等能够让人看到名称就知道 ...
- ubifs & mtd
前天晚上在写完另一篇总结之时,赵XX向我咨询了关于mtd 和ubifs的相关内容.而我在这方面只是略懂皮毛,所以向他许愿共同调查这个方面的知识.经过昨天一天的调查,最后感觉是有了一定的经验和基础了,所 ...
- ios frame,bound和center
frame:指的是视图在父视图的坐标系统中的大小和位置. bound:指的是视图在试图本身的坐标系统中的大小(位置起点是原点). center:指的是视图在父视图坐标系统中的中心点. 贴张苹果官网的图 ...
- sqlserver中常用的四个选项(NOCOUNT/ANSI_NULLS/QUOTED_IDENTIFIER/ XACT_ABORT)
1 NOCOUNT选项 当 SET NOCOUNT 为 ON 时,不返回计数.当 SET NOCOUNT 为 OFF 时,返回计数. eg: if object_id(N'table_test',N' ...
- AngularJS: Dynamically loading directives
http://www.codelord.net/2015/05/19/angularjs-dynamically-loading-directives/ ----------------------- ...
- Ubuntu启动sshd服务
1.Ubuntu主机安装ssh相关服务 openssh-client openssh-server 方法: sudo apt-get install openssh-client openssh-se ...
- Node.js 文件系统流pipe到Http响应流中
// 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http"); var fs=req ...
- Android学习(十) SQLite 基于内置函数的操作方式
main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- Python命令行选项參数解析策略
概述 在Python的项目开发过程中,我们有时须要为程序提供一些能够通过命令行进行调用的接口.只是,并非直接使用 command + 当前文件 就ok的,我们须要对其设置可选的各种各样的操作类型.所以 ...