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 翻页 实例代码
Aug 07 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 PHP
yii数据库的查询方法
Dec 28 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 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
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
对python3新增的byte类型详解
2018/12/04 Python
PyQt5组件读取参数的实例
2019/06/25 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
匡威德国官网:Converse德国
2019/01/26 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
个人自我评价分享
2013/12/20 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
十八大标语口号
2014/10/09 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
党员先进事迹材料
2014/12/19 职场文书
2015年电教工作总结
2015/05/26 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android