2015-01-04 150 views
2

我在这里有一个主要的头痛。基本上我有一个脚本,它使用肥皂服务来检索有关货物的详细信息。使用xampp在本地运行脚本完美无误地工作,但是在我的客户端实际生产服务器上有时会起作用,有时它会引发异常,说明它无法解析wsdl文件或无法连接到主机。PHP肥皂客户端随机错误

每次我得到这些错误,我去检查服务实际上正在运行,每次我都这样做,这很好。

我试过设置在脚本文件的顶部以下选项:

ini_set('soap.wsdl_cache_enabled',0); 
ini_set('soap.wsdl_cache_ttl',0); 
libxml_disable_entity_loader(false); 

我已经注意到的是,如果我得到超过三个例外脚本执行期间抛出的服务器将返回500内部错误。有没有人有什么建议可能会导致这些问题?

以下是错误消息之一,我会添加更多,因为我重新测试脚本:

SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://api.ukmail.com/Services/UKMAuthenticationServices/UKMAuthenticationService.svc?wsdl' : failed to load external entity "https://api.ukmail.com/Services/UKMAuthenticationServices/UKMAuthenticationService.svc?wsdl 

SoapFault exception: [HTTP] Error Fetching http headers 

服务器已经启用的OpenSSL所以这不应该是一个问题。

刚刚尝试下载并在本地使用wsdl文件,结果相同。到目前为止,我几乎没有选择这个选项。

+0

我们可以看到这两种错误类型中的每一种的整体编辑到问题中吗?这些SOAP错误是否在XML封套中? – halfer 2015-01-04 14:41:58

+1

我已经添加了我得到的第一个执行选项。我现在再次运行脚本以查看是否可以生成其他脚本。 – CelestialDog 2015-01-04 14:46:51

+0

脚本可以在没有SSL的情况下临时运行,看看是否有问题? – halfer 2015-01-04 14:48:11

回答

0

我最终放弃了PHP内置的soap客户端,并决定尝试通过curl发送和接收请求,这些请求实际上比内置函数的运行速度奇怪得多,但经过如此多的查询后,我仍然以500内部服务器错误。我最终不得不打破这个过程,以便只在需要的时候才以20个块的形式查询服务。

+0

令人沮丧。我刚刚遇到这个以及升级到PHP 5.5.27后。把我拉上墙,然后回来。有趣的是,这也是UKmail,我试图让这个工作,我来到这里寻找无法加载实体错误。这在5.2上没有错误地工作 – elfling 2015-07-31 21:47:40

0

只是你知道,这个错误很可能是由于端口没有被指定。 这就是为什么它在更新版本的PHP/Soap上产生这种特殊行为的原因。

$soapClient = new SoapClient('https://api.ukmail.com:443/Services/UKMAuthenticationServices/UKMAuthenticationService.svc?wsdl', $params); 

它将侦听端口80,而不是443的响应添加:443的URL解决了这个问题对我来说。

产生的500错误是SOAP PHP错误解析WSDL:无法加载外部实体。