2012-08-04 77 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