解決了file_get_contents() 的SSL 超時和加密啟用錯誤
在PHP 中,當使用file_get_contents() 從頁面檢索內容時,可能會遇到與SSL 加密啟用相關的錯誤。其中一個錯誤是:
Warning: file_get_contents(): SSL: crypto enabling timeout... Warning: file_get_contents(): Failed to enable crypto...
當 PHP 配置缺乏為 SSL 連線啟用加密的必要設定時,就會出現此問題。為了修正這個問題,提出了以下解決方案:
將cURL 與SSLv3 結合使用
可以使用cURL 函式庫取代file_get_contents(),它可以更好地控制🎜>可以使用cURL 函式庫取代file_get_contents(),它可以更好地控制SSL 設定。將CURLOPT_SSLVERSION 選項設為3,將啟用SSLv3,可能會解決以下問題:
<code class="php"><?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>
設定cURL 進行SSL 驗證
在某些情況下,該問題也可能源自根證書遺失或不完整。為了確保正確的 SSL 驗證,建議執行以下步驟:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");</code>
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
以上是如何解決 PHP 中 file_get_contents() 的 SSL 逾時和加密啟用錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!