“file_get_contents()”失败:解决 HTTPS 请求的“无法启用加密”
问题:
当尝试使用 file_get_contents() 获取 HTTPS 网页时,一些用户遇到错误“无法启用加密”。此问题尤其影响 URL“https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/earnings.jhtml?stockspage=earnings&symbols=AAPL&showPriceLine=yes。”
原因:
该错误源于受影响的网站使用 SSLv3。 PHP 中的 openssl 模块与旧版 SSL 存在已知兼容性问题。
解决方案:
要解决此问题,请修改 file_get_contents() 代码以使用 cURL 扩展,它允许指定 SSL 版本。以下代码片段演示了此解决方案:
<code class="php">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"));</code>
Windows 用户的替代解决方案:
在 Windows 系统上,由于缺乏访问权限,可能会遇到额外的挑战到根证书。要解决此问题:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
注意: 确保启用 SSL 验证 (CURLOPT_SSL_VERIFYPEER),否则您将遇到错误。
以上是如何解决 PHP 中 HTTPS 请求的'无法启用加密”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!