【发布时间】:2018-12-24 06:33:16
【问题描述】:
我用了一段时间来检索特定 SSL 网页内容的 PHP 脚本突然开始失败,并抛出以下错误(该页面一直是 SSL 页面):
cUrl error (#35): error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1
alert protocol version
Verbose information:
* Adding handle: conn: 0x1da38f0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x1da38f0) send_pipe: 1, recv_pipe: 0
* About to connect() to www.oddschecker.com port 443 (#0)
* Trying 35.201.89.239...
* Connected to www.oddschecker.com (35.201.89.239) port 443 (#0)
* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection 0
有问题的网页:
https://www.oddschecker.com/golf/open-championship/2018-open-championship/winner
代码:
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
在设置不同的 curl_setopt 参数方面,我尝试了谷歌提出的一些不同的解决方案,但到目前为止还没有运气。任何建议将不胜感激。
本地 Windows PHP 安装
PHP 版本:5.3.28
卷曲版本:7.30.0
SSL 版本:OpenSSL/0.9.8y
【问题讨论】:
-
您的服务器上安装了什么版本的 OpenSSL 和 PHP?您可能需要更新它们。
-
感谢您的回复。它只是我 Windows 机器上的本地 PHP 安装。 PHP 版本 5.3.28 SSL 版本 OpenSSL/0.9.8y
-
看起来您要访问的网站现在只允许 TLS 2 或更高版本。正如@BA_Webimax 所说,您可能需要更新。