我正在尝试使用以下代码从网站检索数据(我已经审查了网址):
<?php
$url = [doesnt really matter];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$archivo_xml = fopen("test.tst", "w");
curl_setopt($ch, CURLOPT_FILE,$archivo_xml);
curl_exec($ch);
$as1 = curl_getinfo($ch, CURLINFO_NAMELOOKUP_TIME);
$as2 = curl_getinfo($ch, CURLINFO_CONNECT_TIME);
$as3 = curl_getinfo($ch, CURLINFO_PRETRANSFER_TIME);
$as4 = curl_getinfo($ch, CURLINFO_STARTTRANSFER_TIME);
$as5 = curl_getinfo($ch, CURLINFO_TOTAL_TIME);
echo "Lookup: ",$as1," \n\r Connect: ",$as2," \n\r Pretransfer: ",$as3," \n\r Starttransfer: ",$as4," \n\r Total: ",$as5,"\n\r","Error: ", curl_error($ch), "\n\r";
curl_close($ch);
fclose($archivo_xml);
?>
它在本地工作正常但不在服务器中。这是本地的输出:
Lookup: 0.015155
Connect: 0.0281
Pretransfer: 0.129087
Starttransfer: 0.786341
Total: 0.786384
Error:
这是服务器的输出:
Lookup: 0.028731
Connect: 0.043182
Pretransfer: 0
Starttransfer: 0
Total: 60.057787
Error: Unknown SSL protocol error in connection to [censored url]
任何其他网址工作正常,问题出在这个特定的网址上。
localhost PHP版本:5.4.23
服务器PHP版本:5.5.7
提前致谢
答案 0 :(得分:16)
尝试设置 cURL
参数
curl_setopt($ch, CURLOPT_SSLVERSION,3); // Apparently 2 or 3
答案 1 :(得分:5)
<强>解决即可。由于这个已知的错误http://sourceforge.net/p/curl/bugs/1319/,我将卷曲降级到7.33并且有效。
答案 2 :(得分:2)
与此帖子的情况一样,添加curl_setopt($ch, CURLOPT_SSLVERSION,3);
并未立即解决问题,SSL已经重新验证并被接受。
答案 3 :(得分:1)
我遇到了类似的错误。 使用这样的常量使它起作用:
curl_setopt( $handle, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3' );
研究链接:https://github.com/guzzle/guzzle/issues/1364
其他常数: https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html
答案 4 :(得分:0)
尝试使用这两个选项
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
如果仍然无效,则可能会在您的服务器上阻止URL。