如何解決 PHP 中 file_get_contents() 的 SSL 逾時和加密啟用錯誤?

Linda Hamilton
發布: 2024-10-23 11:52:30
原創
958 人瀏覽過

How to Resolve SSL Timeout and Crypto Enabling Errors in PHP for file_get_contents()?

解決了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 驗證,建議執行以下步驟:

  1. 下載根憑證。
  2. 使用CURLOPT_CAINFO 指定證書文件的路徑:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");</code>
登入後複製
  1. 使用CURLOPT_SSL_VERIFYPEER 啟用SSL 驗證:
  2. 使用CURLOPT_SSL_VERIFYPEER 啟用SSL 驗證:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

以上是如何解決 PHP 中 file_get_contents() 的 SSL 逾時和加密啟用錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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