首頁  >  文章  >  後端開發  >  為什麼我的 PHP SOAP 連線失敗並顯示「SOAP-ERROR:正在解析 WSDL:無法從 [URL] 載入:無法載入外部實體 [URL]」?

為什麼我的 PHP SOAP 連線失敗並顯示「SOAP-ERROR:正在解析 WSDL:無法從 [URL] 載入:無法載入外部實體 [URL]」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 21:56:03687瀏覽

Why does my PHP SOAP connection fail with

SOAP PHP 解析WSDL 錯誤:無法載入外部實體

嘗試使用PHP 建立SOAP 連線時,您可能會遇到下列錯誤「 SOAP-錯誤:正在解析WSDL:無法從[URL] 載入:無法載入外部實體[URL]」。此錯誤表示 SOAP 用戶端無法存取用戶端建構函數中引用的 WSDL 檔案。

故障排除步驟:

  1. 確保WSDL檔案可用且可存取: 驗證客戶端建構函數URL 中指定的WSDL 檔案是否存在於指定路徑並且可由SOAP 用戶端存取。
  2. 停用SSL 驗證(安全性問題): 如果使用PHP 5.6.5 或更高版本並建立SOAP 1.2 連接,向客戶端建構函數新增SSL 參數可能會解決該問題:
<code class="php">$opts = array(
    'ssl' => array(
        'ciphers' => 'RC4-SHA',
        'verify_peer' => false,
        'verify_peer_name' => false
    )
);

$params = array(
    'encoding' => 'UTF-8',
    'verifypeer' => false,
    'verifyhost' => false,
    'soap_version' => SOAP_1_2,
    'trace' => 1,
    'exceptions' => 1,
    'connection_timeout' => 180,
    'stream_context' => stream_context_create($opts)
);

$wsdlUrl = $url . '?WSDL';
$oSoapClient = new SoapClient($wsdlUrl, $params);</code>

注意:停用SSL 驗證有安全風險,不應在生產環境中使用。

  1. 驗證 WSDL 檔案格式:確保 WSDL 檔案是符合下列標準的有效 XML 文件WSDL 規格。
  2. 檢查網路連線:驗證 SOAP 用戶端是否可以透過網路存取託管 WSDL 檔案的伺服器。
  3. 考慮使用 WSDL 檔案快取: 在 PHP 中啟用 WSDL 檔案快取可以防止重複下載並提高效能:
<code class="php">ini_set("soap.wsdl_cache_enabled", "1");
ini_set("soap.wsdl_cache_ttl", "86400"); // 24 hours</code>

以上是為什麼我的 PHP SOAP 連線失敗並顯示「SOAP-ERROR:正在解析 WSDL:無法從 [URL] 載入:無法載入外部實體 [URL]」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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