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+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
19个Android常用工具类汇总
Dec 30 PHP
10个php函数实用却不常见
Oct 13 PHP
php好代码风格的阶段性总结
Jun 25 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
php session_decode函数用法讲解
May 26 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学习之数组的定义和填充
2011/04/17 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
js 走马灯简单实例
2013/11/21 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python采集腾讯新闻实例
2014/07/10 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python解析xml简单示例
2019/06/21 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
Python多线程正确用法实例解析
2020/05/30 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
高中英语教学反思
2014/02/04 职场文书
社区禁毒工作方案
2014/06/02 职场文书
大学专科自荐信
2014/06/17 职场文书
经济类毕业生求职信
2014/06/26 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
导游词怎么写
2015/02/04 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js