為什麼我在 PHP 中收到「SOAP-ERROR: Parsing WSDL: Couldn\'t load from ...」錯誤?

DDD
發布: 2024-11-03 20:34:29
原創
120 人瀏覽過

Why Am I Getting a

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

在使用PHP 進行SOAP Web 服務整合的上下文中,出現一條錯誤訊息,指出「SOAP -錯誤:解析WSDL:無法從「http://localhost/MyRegistration/login.xml」載入...無法載入外部實體「http://localhost/MyRegistration/login.xml」表示有問題存取或解析指定的WSDL 檔案。

根本原因:

通常,此錯誤是由於以下原因之一造成的:

  • WSDL 檔案的SOAPClient 建構函數中提供的URL 不正確或無法存取。
  • 您的 PHP 配置中存在安全限制,阻止存取外部實體。
  • WSDL 檔案本身是格式錯誤或包含無效的 XML。

故障排除:

1.驗證WSDL URL:

確保SOAPClient 構造函數中提供的URL (此處為「http://127.0.0.1/MyRegistration/login.wsdl」)指向WSDL 檔案的正確位置。或者,嘗試使用文件的完全限定路徑。

2.停用外部實體載入限制:

預設情況下,出於安全原因,PHP 可能會限制對外部實體的存取。若要停用此限制,您可以將以下行新增至PHP 設定(php.ini):

allow_url_fopen = On
登入後複製

3.檢查WSDL 有效性:

驗證WSDL文件(login.wsdl) 的內容,以確保它是格式良好的XML,並包含有效SOAP 契約所需的元素和屬性。使用線上 XML 驗證器或手動檢視文件。

4.其他注意事項:

  • 確保託管 SOAP 服務的伺服器正在運作且可存取。
  • 檢查是否有任何防火牆或代理設定阻止通訊。
  • 驗證 SOAPClient 建構子中所使用的 SOAP 版本(這裡應該是 SOAP_1_2)。

安全影響注意事項:

停用外部實體載入限制可能會引入安全漏洞。建議在解決問題後啟用它或相應地實施替代安全措施。

以上是為什麼我在 PHP 中收到「SOAP-ERROR: Parsing WSDL: Couldn\'t load from ...」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!