不同版本PHP之间cURL的区别
来源:互联网 发布:如何快速入门java 编辑:程序博客网 时间:2024/05/16 06:07
PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求。
传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传。这与命令行直接调用cURL程序的语法是一致的:
curl_setopt(ch, CURLOPT_POSTFIELDS, array(
'file' => '@'.realpath('image.png'),
));
equals
$ curl -F "file=@/absolute/path/to/image.png" <url>
但PHP从5.5开始引入了新的CURLFile类用来指向文件。CURLFile类也可以详细定义MIME类型、文件名等可能出现在multipart/form-data数据中的附加信息。PHP推荐使用CURLFile替代旧的@语法:
curl_setopt(ch, CURLOPT_POSTFIELDS, [
'file' => new CURLFile(realpath('image.png')),
]);
PHP 5.5另外引入了CURL_SAFE_UPLOAD选项,可以强制PHP的cURL模块拒绝旧的@语法,仅接受CURLFile式的文件。5.5的默认值为false,5.6的默认值为true。
但是坑的一点在于:@语法在5.5就已经被打了deprecated,在5.6中就直接被删除了(会产生 ErorException: The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead)。
对于PHP 5.6+而言,手动设置CURL_SAFE_UPLOAD为false是毫无意义的。根本不是字面意义理解的“设置成false,就能开启旧的unsafe的方式”——旧的方式已经作为废弃语法彻底不存在了。PHP 5.6+ == CURLFile only,不要有任何的幻想。
我的部署环境是5.4(仅@语法),但开发环境是5.6(仅CURLFile)。都没有压在5.5这个两者都支持过渡版本上,结果就是必须写出带有环境判断的两套代码。
0 0
- 不同版本PHP之间cURL的区别
- 不同版本PHP之间cURL的区别(-经验之谈)
- JLINK不同版本之间的区别
- curl上传文件到远程,php版本不同的做法
- 关于web.xml不同版本之间的区别
- 不同版本服务器之间的区别与联系
- .NET Framework 不同版本之间区别
- android代码混淆之不同ADT版本和不同IDE之间混淆配置文件的区别
- PHP VC9/VC6 TS/NTS版本之间的区别
- 不同浏览器之间的区别
- Struts不同版本的区别
- ARM不同版本的区别
- IE浏览器的不同版本之间的区别1—css
- oracle不同版本之间的切换
- Flex 和 AIR 版本之间的不同
- opencv不同版本之间的互操作性
- oracle 不同版本之间的导入导出
- python 不同版本之间的print
- Ant安装问题
- Shell命令速查
- 单点登录SSO的实现原理
- Appium总结
- java基础整理-File类
- 不同版本PHP之间cURL的区别
- html初学日记
- 计算机图形学(二)输出图元_20_章节总结_程序展示_折线图和直方图
- poj 2723
- 关于Android线性布局中weight属性的一个小发现
- 上下移动jquery
- Android Fragment实例
- part1: maven 工程整合spring+activemq
- Android 编程下 Touch 事件的分发和消费机制