ホームページ > バックエンド開発 > PHPチュートリアル > PHP の `file_get_contents()` の「SSL 操作がコード 1 で失敗しました」エラーを修正する方法?

PHP の `file_get_contents()` の「SSL 操作がコード 1 で失敗しました」エラーを修正する方法?

Linda Hamilton
リリース: 2024-12-15 08:58:13
オリジナル
967 人が閲覧しました

How to Fix

file_get_contents() SSL 証明書検証エラーのトラブルシューティング

PHP 5.6 で file_get_contents() を使用して REST サービスにアクセスしようとすると、次のような問題が発生する可能性があります。証明書が厳格化されたため、エラー「SSL 操作がコード 1 で失敗しました」

問題の説明
ユーザーの PHP ページは、file_get_contents() を使用して HTTPS エンドポイントからデータを取得しようとします。ただし、次のエラーが表示されて失敗します:

  • 警告: コード 1 で SSL 操作が失敗しました。OpenSSL エラー メッセージ: 証明書の検証に失敗しました
  • 警告: 暗号化を有効にできませんでした
  • 警告: ストリームを開けませんでした: 操作失敗しました

根本原因
PHP 5.6 では、デフォルトでより厳格な SSL 検証が導入され、正確な証明書の検証が必要になりました。このエラーは、クライアントがリモート サーバーの証明書を検証できないことを示しています。

解決策
この問題を解決するために、OpenSSL に関する公式 PHP ドキュメントは 5.6 で変更され、証明書の検証を無効にすることが推奨されています。 注: このソリューションはセキュリティに重大な影響を及ぼします。クライアントとサーバー間の信頼が確立されている管理された環境でのみ検討する必要があります。

$arrContextOptions = array(
    "ssl" => array(
        "verify_peer" => false,
        "verify_peer_name" => false,
    ),
);

$response = file_get_contents("remote_url", false, stream_context_create($arrContextOptions));
ログイン後にコピー
  1. 配列を作成します ($arrContextOptions)
  2. 証明書を無効にするには、verify_peer を false に設定します。
  3. ホスト名検証を無効にするには、verify_peer_name を false に設定します。
  4. $arrContextOptions 配列を使用して stream_context を作成します。
  5. ストリーム コンテキストを 3 番目のパラメータとして file_get_contents( ).

重要注
SSL 証明書の検証を無効にすると、セキュリティが低下し、アプリケーションが盗聴やその他のセキュリティ侵害にさらされる可能性があります。この回避策に頼るのではなく、信頼できる SSL 証明書を使用するようにシステムを正しく構成することを強くお勧めします。

以上がPHP の `file_get_contents()` の「SSL 操作がコード 1 で失敗しました」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート