PHP SoapClient无法加载WSDL文件,但它可以加载其他文件

时间:2013-12-14 20:34:31

标签: php soap

我知道这里有无数的线索,但没有任何建议对我有用。

尝试创建新的SoapClient时,出现错误:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: 
Couldn't load from 'https://m2mconnect.ee.co.uk/orange-soap/services/MessageServiceByCountry?wsdl' : 
failed to load external entity "https://m2mconnect.ee.co.uk/orange-soap/services/MessageServiceByCountry?wsdl"

WSDL文件是:https://m2mconnect.ee.co.uk/orange-soap/services/MessageServiceByCountry?wsdl

我认为这可能是https问题,但我已经成功加载了其他wsdl客户端。它似乎只是这个EE不会起作用,而且它变得非常令人沮丧!

我在mac os x主机上使用php5.5在一个流浪的实例上运行我的应用程序。我尝试在mac os x上运行它,我也遇到了同样的问题。

我也尝试为SoapClient设置'ssl_method'选项,但这没有效果。

我试图卷曲/忘记网址但是它收到了SSL错误,而它完成了与https://paypal.com

之类的握手

有没有人有任何想法可能导致这个?

更新

我在流浪盒上运行了这个:curl -v -SSLv3 https://m2mconnect.ee.co.uk/orange-soap/services/MessageServiceByCountry?wsdl并且连接成功,但创建一个选项ssl_method设置为SOAP_SSL_METHOD_SSLv3的SoapClient不起作用

2 个答案:

答案 0 :(得分:3)

我最终分叉了包裹SoapClient的BeSimpleSoapClient并使用Curl来获取SoapService。我修改了他们的Curl类以允许设置curl ssl版本:https://github.com/robcaw/BeSimpleSoapClient

答案 1 :(得分:0)

我现在可以使用浏览器访问WSDL位置。

所以唯一的答案是:如果在尝试使用curl或wget下载WSDL时遇到SSL错误,那么可以安全地假设PHP具有相同的错误 - 并且解决方案是修复它们 - 并且作为第一步,在你的问题中提到你的发现。

现在看来,PHP不应该受到责备,你所做的一切都应该有效 - 唯一缺少的是获取WSDL的网络连接。