首頁 >後端開發 >php教程 >如何修正 PHP 的 `file_get_contents()` 中的「SSL 操作失敗,程式碼 1」錯誤?

如何修正 PHP 的 `file_get_contents()` 中的「SSL 操作失敗,程式碼 1」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-15 08:58:13972瀏覽

How to Fix

對file_get_contents() SSL 憑證驗證錯誤進行故障排除

在PHP 5.6 中嘗試使用file_get_contents() 存取服務時,您存取可能會遇到由於憑證更嚴格,出現錯誤“SSL 操作失敗,代碼為1”

問題描述
使用者的 PHP 頁面嘗試使用 file_get_contents() 從 HTTPS 端點取得資料。但是,它失敗並出現以下錯誤:

  • 警告:SSL 操作失敗,代碼為 1.OpenSSL 錯誤訊息:憑證驗證失敗
  • 警告:無法啟用加密
  • 警告:無法開啟流:操作失敗

Root原因
PHP 5.6 預設引入了更嚴格的 SSL 驗證,需要準確的憑證驗證。此錯誤表示客戶端無法驗證遠端伺服器的憑證。

解決方案
為了解決此問題,關於 5.6 中 OpenSSL 更改的官方 PHP 文件建議停用憑證驗證。 注意:此解決方案具有重大安全隱患,僅應在客戶端和伺服器之間建立信任的受控環境中考慮。

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

$response = file_get_contents("remote_url", false, stream_context_create($arrContextOptions));
  1. 建立陣列 ($arrContextOptions)配置 SSL 選項。
  2. 將 verify_peer 設定為 false 以停用憑證驗證。
  3. 設定verify_peer_name 設定為 false 以停用主機名稱驗證。
  4. 使用 $arrContextOptions 陣列建立 Stream_context。
  5. 將流上下文作為第三個參數傳遞給 file_get_contents()。

重要說明
停用 SSL憑證驗證會降低安全性,並可能使您的應用程式遭受竊聽和其他安全漏洞。強烈建議正確配置您的系統以使用受信任的 SSL 證書,而不是訴諸此解決方法。

以上是如何修正 PHP 的 `file_get_contents()` 中的「SSL 操作失敗,程式碼 1」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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