“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 有已知相容性問題。
解決方案:<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>
要解決此問題,請修改 file_get_contents() 程式碼以使用 cURL 擴展,它允許指定 SSL 版本。以下程式碼片段示範了此解決方案:
Windows 使用者的替代方案:<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
指定下載的「cacert.pem」的路徑" 使用下列cURL 選項的檔案:
注意: 確保啟用IFSSL 驗證(CURLOPT_SSL_VERVERiiY ),否則您將遇到錯誤。以上是如何解決 PHP 中 HTTPS 請求的「無法啟用加密」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!