如何解决使用 OpenSSL 的 file_get_contents() 加密初始化失败的问题?

DDD
发布: 2024-10-23 12:22:36
原创
806 人浏览过

How to Resolve Failed Crypto Initialization for file_get_contents() Using OpenSSL?

使用 OPENSSL 对 file_get_contents() 的加密初始化失败进行故障排除

在使用 OPENSSL 的 file_get_contents() 时遇到“无法启用加密”错误时,进行调查至关重要根本问题。

确定根本原因

提供的错误日志表明加密初始化期间超时。然而,问题可能出在其他地方。一种可能的原因是网站使用了不受支持的 SSL 版本,例如 SSLv3。

使用 cURL 的解决方案

绕过 file_get_contents() 的限制并启用 SSLv3 支持,建议改用 cURL:

<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>
登录后复制

此解决方案显式将 SSL 版本设置为 v3,允许curl 成功处理 SSL 握手。

Windows 用户的其他注意事项

对于Windows用户,可能还需要为curl指定根证书的位置。这可以通过以下方式实现:

<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
登录后复制

通过将 CURLOPT_SSL_VERIFYPEER 选项设置为 true,curl 将根据指定的根证书验证对等方的证书。

以上是如何解决使用 OpenSSL 的 file_get_contents() 加密初始化失败的问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!