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:')); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM