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公用函数列表[正则]
Feb 22 PHP
PHP中for循环语句的几种变型
Mar 16 PHP
php下的权限算法的实现
Apr 28 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
PHP hex2bin()函数用法讲解
Feb 25 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Django csrf 验证问题的实现
2018/10/09 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
python将unicode和str互相转化的实现
2020/05/11 Python
如何表示python中的相对路径
2020/07/08 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
小学信息技术教学反思
2014/02/10 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
会计岗位职责
2015/02/03 职场文书
党员个人总结范文
2015/02/14 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
php 原生分页
2021/04/01 PHP
python 提取html文本的方法
2021/05/20 Python