首頁  >  文章  >  後端開發  >  為什麼我的 SOAP PHP 用戶端無法載入外部 WSDL 檔案?

為什麼我的 SOAP PHP 用戶端無法載入外部 WSDL 檔案?

Patricia Arquette
Patricia Arquette原創
2024-11-03 06:14:02478瀏覽

Why Can't My SOAP PHP Client Load the External WSDL File?

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

問題: 嘗試執行Web 服務時使用PHP 和SOAP 時遇到錯誤:「SOAP-ERROR: 正在解析WSDL: 無法從'http://localhost/MyRegistration/login.xml' 載入:無法載入外部實體」http://localhost/MyRegistration /login.xml"" .

答案:

錯誤訊息表明SOAP 用戶端無法從指定的URL 載入外部WSDL 檔案。發生這種情況的原因有多種:

  • URL 不正確:確保SoapClient 構造函數中提供的URL (http://127.0.0.1/MyRegistration/login. wsdl) 是正確且可訪問。
  • 安全限制:預設情況下,出於安全考慮,PHP 不允許載入外部實體。您可以將以下行新增至PHP 腳本來停用此限制:

    <code class="php">libxml_disable_entity_loader(false);</code>

注意: 停用安全限制應謹慎執行,因為它可以讓您的應用程式面臨潛在的漏洞。

  • 內部實體:錯誤訊息特別提到無法載入外部實體。這表示 WSDL 檔案中可能存在導致問題的內部實體參考。檢查 WSDL 檔案中是否有對其他 XML 實體的參考。
  • WSDL 命名空間:確保 WSDL 檔案中指定的命名空間與 PHP SoapClient 建構函式中使用的命名空間相符(例如 urn :LoginVal)。

其他注意事項:

  • 確保SOAP 伺服器正在指定的URL 和連接埠上運作(即http:// /localhost/MyRegistration/ register.php)。
  • 檢查 login.wsdl 檔案的權限,確保 Web 伺服器可以讀取該檔案。
  • 如果您仍然遇到問題,請考慮使用內建的soap_client_call函數從指定的URL手動擷取WSDL。

以上是為什麼我的 SOAP PHP 用戶端無法載入外部 WSDL 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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