2012-08-04 114 views
3

我使用php(最新穩定的Ubuntu版本)的cUrl來獲取遠程https頁面,curl_exec在到達超時後返回false。很顯然,我正在使用這些設置:PHP cUrl ssl timeout

curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, 0); 

使用wireshark,似乎服務器在「Client Hello」後沒有回答問題。 一些奇怪的事實:

  1. 通過CLI在同一臺機器
  2. 運行的舊機器正常工作

提示完全相同的代碼寫在Perl中運行相同的腳本?有人建議重新編譯curl和openssl ...我可以在開發機器上做到這一點,但生產服務器有同樣的問題,爲便於維護,我想只保留原始數據包... 謝謝!

+1

我知道這將是一個正確的捂臉時刻,但請你仔細檢查你居然沒把'https'作爲URL方案並沒有錯過過了' s'?如果您嘗試啓動SSL連接到僅查找純文本數據的TCP端口,我可以看到發生這種情況......我認爲這不太可能是一個捲曲問題。您也可以嘗試強制使用特定的SSL版本('CURLOPT_SSLVERSION',從強制v3開始)。有必要測試一下,看看您是否可以使用cURL執行簡單的HTTPS GET,例如'https:// google.com /' – DaveRandom 2012-08-04 18:16:19

+0

是的,絕對不是一個捲曲問題。 請檢查您的DNS。 – Dark 2012-08-06 16:33:14

+0

工作迫使SSLVERSION爲3.謝謝DaveRandom! – rcason 2012-08-07 20:01:05

回答

6

解決了:

curl_setopt($soap_do, CURLOPT_SSLVERSION, 3);

+0

謝謝。這個答案是我的問題的關鍵。 – 2013-09-19 21:57:54