首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP SoapClient -尽管WSDL是有效的并且可以在浏览器/curl中访问,但“无法加载外部实体”

PHP SoapClient -尽管WSDL是有效的并且可以在浏览器/curl中访问,但“无法加载外部实体”
EN

Stack Overflow用户
提问于 2020-08-09 05:52:35
回答 2查看 849关注 0票数 0

这个问题已经困扰我几个小时了。我可以在浏览器中使用curl很好地访问wsdl,但是在使用以下代码时,PHP SoapClient会返回一个错误:

代码语言:javascript
复制
$ps_client = new SoapClient("https://ppds.hitpromo.net/productData");

下面是它返回的错误:

代码语言:javascript
复制
Fatal error: Uncaught SoapFault exception: 
[WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://ppds.hitpromo.net/productData' : 
failed to load external entity "https://ppds.hitpromo.net/productData"

我尝试了各种解决方案,包括在调用构造函数时设置各种选项,但似乎都不起作用。

EN

回答 2

Stack Overflow用户

发布于 2020-08-09 05:52:35

这最终不是真正的修复,它的发生是因为在php中没有启用SSL。我在php.ini中注释掉了这一行,修复了这个问题:

代码语言:javascript
复制
extension=openssl

在我的例子中,我可以使用http uri构造SoapClient,但是它在调用函数时抛出了一个错误,因为SSL没有启用。

以前的回答是:证明这是一个非常简单的修复方法。我不知道为什么,但是把它从https改成http就解决了所有问题:

代码语言:javascript
复制
$ps_client = new SoapClient("http://ppds.hitpromo.net/productData");

这真是一个令人沮丧的问题,因为我在java上使用过同样的WSDL,在使用ksoap时没有遇到过这个问题。我想把它贴出来,因为我相信总有一天会有人遇到同样的问题。

票数 0
EN

Stack Overflow用户

发布于 2020-12-11 05:54:44

发生此错误是因为您的站点位于其防火墙阻止交换的主机上。联系您的主机公司,将交换站点的IP添加到防火墙白名单中。您无需删除ssl或代码即可忽略它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63320545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档