在使用 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中文网其他相关文章!