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