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

Patricia Arquette
發布: 2024-10-23 19:00:02
原創
886 人瀏覽過

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

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!