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 相关文章推荐
PHP5+UTF8多文件上传类
Oct 17 PHP
基于pear auth实现登录验证
Feb 26 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
php curl选项列表(超详细)
Jul 01 PHP
迁移PHP版本到PHP7
Feb 06 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
Python内置函数dir详解
2015/04/14 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python查看模块,对象的函数方法
2018/10/16 Python
Django框架模板的使用方法示例
2019/05/25 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
python怎么自定义捕获错误
2020/06/29 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
家长会标语
2014/06/24 职场文书
政协调研汇报材料
2014/08/15 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
任命书格式范文
2015/09/22 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技