ホームページ >バックエンド開発 >PHPチュートリアル >PHP での file_get_contents() の SSL タイムアウトと暗号化有効化エラーを解決する方法は?

PHP での file_get_contents() の SSL タイムアウトと暗号化有効化エラーを解決する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-23 11:52:301039ブラウズ

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

file_get_contents() の SSL タイムアウトと暗号化有効化エラーが解決されました

PHP で、file_get_contents() を使用して HTTPS ページからコンテンツを取得する場合、 SSL 暗号化の有効化に関連するエラーが発生する可能性があります。そのようなエラーの 1 つは次のとおりです。

Warning: file_get_contents(): SSL: crypto enabling timeout...
Warning: file_get_contents(): Failed to enable crypto...

この問題は、SSL 接続の暗号化を有効にするために必要な設定が PHP 構成にない場合に発生します。これを修正するために、次の解決策が提案されています。

SSLv3 で cURL を使用する

file_get_contents() の代わりに、cURL ライブラリを使用できます。これにより、より高度な制御が可能になります。 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>

SSL 検証用の cURL の構成

場合によっては、ルート証明書の欠落または不完全が原因である可能性もあります。適切な SSL 検証を確実に行うには、次の手順をお勧めします:

  1. ルート証明書をダウンロードします。
  2. CURLOPT_CAINFO を使用して証明書ファイルへのパスを指定します:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");</code>
  1. CURLOPT_SSL_VERIFYPEER を使用して SSL 検証を有効にする:
<code class="php">curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>

これらのソリューションを実装すると、PHP の file_get_contents() に関連する SSL タイムアウトと暗号化有効化エラーを解決でき、複雑なことをせずに HTTPS ページからコンテンツを取得します。

以上がPHP での file_get_contents() の SSL タイムアウトと暗号化有効化エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。