php curl访问https 域名接口一直报错的问题

Posted 我辈年轻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php curl访问https 域名接口一直报错的问题相关的知识,希望对你有一定的参考价值。

这两天一直在对接一个https的接口

通过本地postman完美链接后再服务器一直报错

出现问题:linux 下 curl可以正常访问 但是php请求一直返回false

测试方法:var_dump(curl_error($ch)); <在close之前>

  返回:“SSL: certificate subject name ‘xxx‘ does not match target host name ‘www.miniscores.cn‘”

  这说明ssl证书有问题,如果对方没有给定证书。就忽略吧。

解决办法:

  1、忽略证书(两个都要加上!否则并不能忽略):

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

  2、自然是让对方提供证书啦

 

另转大神(TAOisMESS)的其他问题解决方案:

在命令行中使用curl调用跳过SSL证书检查的方法,需要的朋友可以参考下。
 
 
症状: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 curl访问https 域名接口一直报错的问题的主要内容,如果未能解决你的问题,请参考以下文章

[解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题

如何在curl方式下url请求域名使用指定ip地址来访问某个服务器

cURL Error:Failed connect to *****.com:80; Connection timed out

php post 请求https接口

mac访问接口报错,无法访问80端口出现代理报错的情况解决方案

mac访问接口报错,无法访问80端口出现代理报错的情况解决方案