2011-06-08 189 views
0

我有這樣的功能:curl_exec總是返回0?

function Connect($url, $post = 0, $postfields = '') 
{ 
    $ch = curl_init(); 
    if($post > 0) { 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
    } 
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/joomla-cookie.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/joomla-cookie.txt'); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    $exec = curl_exec($ch); 
    if($exec) { return $exec; } else { return 0; } 
} 

我這樣稱呼它是Connect($host)

,它總是返回0 ...

+0

'$ host'建議您發送「google.com」,其中所需的url爲'http:// google.com',你在用什麼? – 2011-06-08 22:57:39

+0

@Sabeen我用https:// 實際發送它也許是因爲https://而不是http://? cuz「http://www.google.com」的作品。 – Danpe 2011-06-08 23:05:19

回答

2

嘗試設置CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST爲false。這應該夠了吧。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
+0

@Sabeen有一種方法可以使Cookie也支持SSL嗎? 因爲會話只保存時使用http:// ... – Danpe 2011-06-08 23:27:12

+0

我不認爲https應該影響曲奇存儲的方式。看看joomla-cookie.txt文件,看看它包含什麼,這可能會給你一些線索。 – 2011-06-08 23:38:51

+0

@Sabeen是我不認爲它應該也會影響它,但它確實大聲笑。 我對餅乾毫無頭緒。以下是pastebin:http://pastebin.com/RX9vnEbT – Danpe 2011-06-08 23:41:36

1

檢查是否有與curl_exec後請求的錯誤:

if(curl_errno($ch)){ 
    echo 'Curl error: ' . curl_error($ch); 
} 

這將爲您提供足夠的信息,以瞭解請求是否存在錯誤。如果沒有錯誤,你可以檢查curl_exec後發送的請求,所以你可以仔細檢查,一切發送代替:

print_r(curl_getinfo($ch)); 
+0

謝謝!我收到SSL錯誤: 捲曲錯誤:SSL證書問題,請驗證CA證書是否正常。 Detai ls: 錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗 dSession ID: Curl錯誤:SSL證書問題,請驗證CA證書是否正常。詳細信息: 錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗 所以它必須是因爲https:// .. – Danpe 2011-06-08 23:12:27