鍍金池/ 問答/PHP/ php curl 返回 bool(false) https的都不行

php curl 返回 bool(false) https的都不行

php curl 返回 bool(false) 在本地獲取可以,放其他服務器可以這是什么問題?
是服務器配置的問題嗎?圖片描述
各位大神誰知道的?????

只要是https的都get不到也post不到
其他的服務器是可以的


$jiekou='https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=13457854758';
 
 var_dump(https_request($jiekou));







function https_request($url){
  $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不驗證證書
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //不驗證證書
    $r = curl_exec($ch);
    curl_close($ch);
    return $r;


}
回答
編輯回答
浪婳

1.TIMEOUT值太小
2.建議增加CURLOPT_REFERER
3.USER AGENT最好不要從$_SERVER里面提取,它可以被客戶端任意修改,也可能不存在,你的目的是從遠程服務器獲取數據,沒有必要每次都去取訪問你的網站的客戶端的USER AGENT,只要發(fā)送一個不會被遠程服務器拒絕的USER AGENT即可
4.最好先定義函數,再調用,這不算錯誤,但不是好習慣……
5.可以使用curl_getInfo()和curl_error()調試
6.你的代碼我已經給你改好了……

<?php
    function https_request($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $r = curl_exec($ch);
        curl_close($ch);
        return $r;
    }

    $jiekou='https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=13457854758';
     
    var_dump(https_request($jiekou));

?>
2017年11月30日 21:16
編輯回答
心癌

curl_error($ch);看下報錯

2018年7月21日 13:23
編輯回答
耍太極

Problem with the SSL CA cert (path? access rights?)

讓運維重啟了一下服務器可以了

2017年7月11日 11:50
編輯回答
懷中人

圖片刷不出來
不過你CURLOPT_TIMEOUT設置的是1秒,也許是你服務器網絡不太好,設置超時為10秒試試

2018年9月18日 03:31