2012-07-13 37 views
0

我正在管理一個測試版網站,其中只有少數試用用戶(20箇中的3個)無法在特定頁面上看到內容。每個用戶在不同的網絡上使用不同的計算機。我已確認3位用戶已啓用JavaScript,但這並不能解決問題。cURL由於SSL證書拒絕而失敗?

深入研究,看起來內容不足是由於cURL調用失敗引起的;對於這些用戶來說,看起來curl_exec()要麼失敗,要麼返回沒有數據,這反過來返回空結果,這就是爲什麼他們沒有看到任何信息。對於這3個用戶,這個問題存在於3個獨立的瀏覽器(Chrome,IE,Firefox)中。我已經證實,這不是由於任何用戶設置,比如用戶ID,因爲我可以從不同網絡上的多臺計算機登錄到他們的帳戶並獲得響應。

我認爲罪魁禍首可能是他們的機器/網絡處理SSL證書的方式。我不熟悉SSL證書,所以請原諒我在某些領域的無知或明顯的錯誤。然而,淘汰過程導致我相信網站證書被這三個用戶的網絡/機器所拒絕,因此cURL調用失敗。我的問題是,如何確認這種情況,如果是這樣,會是什麼原因,以及如何解決問題?

該網站是用PHP使用Zend frameowrk構建的。 以下是相關位代碼:

$ssl_cert = ZendGA_Global::getOption('curl_ssl_certificate'); 
$ssl_verify_peer = ZendGA_Global::getOption('curl_ssl_verify_peer'); 
$ssl_verify_host = ZendGA_Global::getOption('curl_ssl_verify_host'); 

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// related to SSL cerificate verification 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl_verify_host); 
curl_setopt($ch, CURLOPT_CAINFO, $ssl_cert); 


//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 

任何幫助將不勝感激。

+0

給我你的網址我會幫你。 – Sathishkumar 2012-07-14 10:51:24

回答

0

我已經發現了這個問題:cURL調用失敗,但僅僅是因爲URL不正確,這是其他地方原創的問題。該URL是從基本URL和一些參數創建的,但抓取基本URL的函數是抓取主機名而不是域名。有些用戶通過VPN登錄,導致主機名的讀取方式略有不同,這就是網址錯誤的原因。好的,這相當複雜,但問題已經解決。 :-)

相關問題