PHP curl https访问问题
PHP curl https访问问题,原代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/* @String url URL地址 * @Array data POST数据 * @Resource curl cURL对象 * @return info 返回信息 */ $curl = curl_init(); // 启动一个cURL会话 curl_setopt( $curl , CURLOPT_URL, $url ); // 要访问的地址 curl_setopt( $curl , CURLOPT_HEADER, 0); //返回header部分 curl_setopt( $curl , CURLOPT_HTTPHEADER, array ( "Content-Type: application/xml" )); curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1); //返回字符串,而非直接输出 curl_setopt( $curl , CURLOPT_USERAGENT, $_SERVER [ 'HTTP_USER_AGENT' ]); // 模拟用户使用的浏览器 curl_setopt( $curl , CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt( $curl , CURLOPT_POSTFIELDS, $data ); // Post提交的数据包 curl_setopt( $curl , CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 $info = curl_exec( $curl ); // 执行操作并返回数据 curl_close( $curl ); // 关闭cURL会话 |
https访问错误,加入了cURL查看错误方法curl_error()
1
2
|
$error = curl_error ( $curl ); //需放在curl_close($curl)执行之前 var_dump( $error ); |
返回的错误信息为:
SSL certificate problem, verify that the CA cert is OK
HTTPS协议服务器进行SSL验证的问题
解决方法有多种,可以将HTTPS改为使用HTTP协议(可行的情况下),也可以通过cURL选项设置为禁止验证(推荐):
1
2
|
curl_setopt( $curl , CURLOPT_SSL_VERIFYHOST, 0); curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, FALSE); |
参看PHP手册中关于cURL选项的描述:PHP: curl_setopt
CURLOPT_SSL_VERIFYPEER
禁用后cURL将终止从服务端进行验证。使用 CURLOPT_CAINFO
选项设置证书使用CURLOPT_CAPATH
选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER
(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST
需要被设置成TRUE
否则设置为FALSE
。
CURLOPT_SSL_VERIFYHOST
1 检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。2 检查公用名是否存在,并且是否与提供的主机名匹配。
注意按手册规定:
CURLOPT_SSL_VERIFYPEER属于应该被赋予一个bool类型值的选项;
CURLOPT_SSL_VERIFYHOST属于应该被赋予一个integer的选项。
更改之后问题就解决了。
值得一提的是,当cURL出现错误和问题时,curl_exec()将返回FALSE,可以使用上面提到的curl_error()方法输出错误原因。此方法必须在curl_close()之前使用。
PHP curl https访问问题的更多相关文章
- Curl https 访问
如果访问https的网页,出现: curl: (60) SSL certificate problem: unable to get local issuer certificate 将 将 CURL ...
- 使用curl,libcurl访问Https
编译curl,libcurl 下载curl源码(git clone https://github.com/curl/curl),在目录curl\winbuild\BUILD.WINDOWS.txt文件 ...
- ACME[free https] Linux中使用curl命令访问https站点4种常见错误和解决方法
free https certification generator https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E 每一种客户 ...
- 记一次https访问握手失败(handshake failure)
文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6239518.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...
- 记一次解决curl https证书问题
问题起因 在访问https的网站时,报出Peer's Certificate has expired的错误.如下: [root@localhost ~]# curl https://www.baidu ...
- Linux Apache配置https访问
配置https访问 该环境是rh254课程配套的一个环境,不过配置方法步骤相同. 要求: 使用虚拟主机技术部署两个网站: 网站1: 绑定域名 www0.example.com 目录在 /srv/www ...
- linux c++ curl https 请求并双向验证SSL证书
1.配置curl https请求需要提供 CA证书.客户端证书和客户端秘钥,这三个文件的pem格式. 分别对应 curl_easy_setopt() 函数的 下面三个参数: CURLOPT_CAINF ...
- libcurl 不支持https访问
项目中使用libcurl 访问https的时候会报错,比如:“Unsupported protocol” 或者:“Protocol https not supported or disabled in ...
- PHP CURL HTTPS POST
PHP CURL HTTPS POST function vpost($url,$data){ // 模拟提交数据函数 $curl = curl_init(); // 启动一个CURL会话 ...
随机推荐
- ListActivity的CheckBox点击事件
在一个ListActivity中,可能有很多行,如何在某个动作(如点击某个按钮)时判断哪些行的CheckBox被选中了,哪些行的CheckBox没有被选中,这是一个需要解决的问题. 首先,需要让Bas ...
- FireMonkey 导出目前 Style 另存文件
FireMonkey 能将目前使用的 Style 导出成文件,它提供二种文件格式,请看下列代码: *.style procedure TForm1.Button1Click(Sender: TObje ...
- 2016 年青岛网络赛---Sort(k叉哈夫曼)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5884 Problem Description Recently, Bob has just learn ...
- Scalaz(21)-类型例证:Liskov and Leibniz - type evidence
Leskov,Leibniz,别扭的名字,是什么地干活?碰巧从scalaz源代码里发现了这么个东西:scalaz/BindSyntax.scala /** Wraps a value `self` a ...
- Windows 7 性能优化
1."计算机" 2.右键>"属性" 3."高级系统设置">"高级" 4."性能"> ...
- 静态代码审查工具FxCop插件开发(c#)
FxCop是一款微软官方提供的.net平台代码审查工具,目的是检查我们编写的程序集的代码是否符合规范.FxCop默认提供的是微软默认的审查规则,而且该规则符合<Framework DesignG ...
- 如何向github上传文件
创建账号并登入 申请一个github账号,登入进去后新建一个项目,得到链接地址 创建本地文件 在本地创建一个文件夹,在文件夹里创建一个git版本库(要预先安装好git),然后点击推送,在弹出框里点击管 ...
- go语言 rune切片
go语言 rune切片 示例 package main import ( "fmt" ) //http://www.cnblogs.com/osfipin/ func main() ...
- HTML 文本格式化实例
一,文本格式化:此例演示如何在一个 HTML 文件中对文本进行格式化. <html> <body> <b>This text is bold</b> & ...
- Sharepoint 2010 无法上传文件的问题
现象: 用户拥有某文档库的参与讨论权限,但是点击“上传文件”时,系统提示当前用户没有权限 (Access Denied) . 某用户拥有某文档库的参与讨论权限,“上传单个文件”按键是可以用的,但是“上 ...