在使用 OPENSSL 的 file_get_contents() 时遇到“无法启用加密”错误时,进行调查至关重要根本问题。
识别根本原因
提供的错误日志表明加密初始化期间超时。然而,问题可能出在其他地方。一种可能的原因是网站使用了不受支持的 SSL 版本,例如 SSLv3。
解决方案使用 cURL
来绕过 file_get_contents() 的限制并启用 SSLv3 支持,建议使用 cURL 代替:
function getSSLPage($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));
此解决方案显式将 SSL 版本设置为 v3,允许curl 处理SSL 握手成功。
Windows 用户的其他注意事项
对于 Windows 用户,可能还需要为curl 指定根证书的位置。这可以通过以下方式实现:
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
通过将 CURLOPT_SSL_VERIFYPEER 选项设置为 true,curl 将根据指定的根证书验证对等方的证书。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3