SOAP 解析错误:无法加载外部实体
在使用 PHP 进行 SOAP Web 服务集成的上下文中,出现一条错误消息,指出“SOAP -错误:解析 WSDL:无法从“http://localhost/MyRegistration/login.xml”加载...无法加载外部实体“http://localhost/MyRegistration/login.xml””表示存在问题访问或解析指定的 WSDL 文件。
根本原因:
通常,此错误是由于以下原因之一造成的:
故障排除:
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.其他注意事项:
安全影响注意事项:
禁用外部实体加载限制可能会引入安全漏洞。建议在解决问题后启用它或相应地实施替代安全措施。
以上是为什么我在 PHP 中收到“SOAP-ERROR: Parsing WSDL: Couldn\'t load from ...”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!