SoapClient:错误代码WSDL


SoapClient: faultcode WSDL

当我尝试使用SoapClient:时

try {
    $client = new SoapClient('http://someurl/somefile.wsdl');
} catch (SoapFault $e) {
    var_dump($e);
}

我有捕获错误:

["faultstring"] => "SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://someurl/somefile.wsdl' : failed to load external entity "http://someurl/somefile.wsdl"
["faultcode"] => "WSDL"

我可以手动下载http://someurl/somefile.wsdl,并可以为该文件文件_get_contents。我以前试过在不同的电脑上使用它,它起作用了。php或apache设置可能存在问题。。

ArchLinux,带有php和apache的最新更新。我尝试启用所有php扩展。

您是否能够在浏览器中使用file_get_contents()获取wsdl?

我最近在Archlinux中遇到了类似的问题,无论使用什么wsdl文件,都有相同的错误字符串。同样的代码在其他Archlinux机器和Windows XP盒子上运行时没有任何问题。

经过一番研究,发现只有当我试图在浏览器中访问页面时,问题才出现——从命令行访问的脚本按预期工作。然后,我更改了脚本,使用前面提到的file_get_contents()直接下载wsdl文件——它给了我一个警告"php_network_getaddresses: getaddrinfo failed: Name or service not known"

很少有教程(关于SO或本教程:http://albertech.net/2011/05/fix-php_network_getaddresses-getaddrinfo-failed-name-or-service-not-known/)后来我还没有解决这个问题。但后来我发现了引入问题的原因:自从安装了Arch(以更好地处理无线)以来,我一直在运行NetworkManager,几周后,我在rc.conf的DAEMONS部分添加了mysqld和httpd作为最后一个,这似乎破坏了apache的DNS解析。

有了两个解决方案(回到手动启动服务器或尝试其他网络管理器),我已经切换到wicd,没有再次遇到这个问题。