首頁  >  文章  >  後端開發  >  如何解決 PHP 中 HTTPS 請求的「無法啟用加密」錯誤?

如何解決 PHP 中 HTTPS 請求的「無法啟用加密」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-10-23 19:00:02887瀏覽

How to Resolve

“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 使用者的替代方案:
  1. 在Windows 系統上,由於缺乏存取權限,可能會遇到額外的挑戰到根證書。若要解決此問題:
從 http://curl.haxx.se/docs/caextract.html 下載根憑證。
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn