php curl常见错误:SSL错误、bool(false)


Posted in PHP onDecember 28, 2011

症状:php curl调用https出错
排查方法:在命令行中使用curl调用试试。
原因:服务器所在机房无法验证SSL证书。
解决办法:跳过SSL证书检查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

症状:php curl调用curl_exec返回bool(false),命令行curl调用正常。
排查方法:
var_dump(curl_error($ch));
返回:
string(23) "Empty reply from server"
再排查:
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
返回:
HTTP/1.1 100 Continue
Connection: close
原因:php curl接收到HTTP 100就结束了,应该继续接收HTTP 200
解决方案:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

PHP and cURL: Disabling 100-continue header
Published June 15th, 2006
I've been using cURL (through PHP) to build a sort of proxy for a project I'm working on. I need to parse the returned headers (to recover the HTTP status), so had included a very simple script to do so. It had worked fine in the past, but for some reason barfed in this case. A closer look at what was being returned revealed that for some reason, Apache was prepending the ‘normal' headers with an extra response header:

HTTP/1.1 100 Continue

HTTP/1.1 200 OK Date: Fri, 09 Jun 2006 15:23:42 GMT
Server: Apache
...A bit of Googling revealed that this was to do with a header that cURL sends by default:

Expect: 100-continue

…which in turns tells Apache to send the extra header. I poked around a fair bit but couldn't quite find a workable solution short of manually removing the header in PHP, which seemed a bit clumsy. Finally, on a hunch I tried this:

curl_setopt( $curl_handle, CURLOPT_HTTPHEADER, array( 'Expect:' ) );

…which basically overrides the original ‘Expect:' header with an empty one.

Hope this helps someone.

PHP 相关文章推荐
php cache类代码(php数据缓存类)
Apr 15 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
php实现简单的MVC框架实例
Sep 23 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
PHP中FTP相关函数小结
Jul 15 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
PHP实现简易图形计算器
Aug 28 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 #PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 #PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 #PHP
url decode problem 解决方法
Dec 26 #PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 #PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 #PHP
php操作JSON格式数据的实现代码
Dec 24 #PHP
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
管理学专业个人求职信范文
2013/09/21 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
项目计划书范文
2014/01/09 职场文书
生日寿宴答谢词
2014/01/19 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2015年超市工作总结
2015/04/09 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
Promise静态四兄弟实现示例详解
2022/07/07 Javascript