致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从''加载:无法加载外部实体

时间:2014-04-27 10:01:18

标签: php web-services soap wsdl

这是我得到的错误:

  

致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析   WSDL:无法加载   'http://subdomain.example.com:105/Example/Example.asmx?WSDL':失败了   加载外部实体   “http://subdomain.example.com:105/Example/Example.asmx?WSDL

由于此请求:

$client = new SoapClient('http://subdomain.example.com:105/Example/Example.asmx?WSDL');

我做了什么:

  1. 从我的本地主机或网络浏览器访问此确切资源也可以。

  2. 访问其他没有的资源:105个工作(如果这可能很重要)。

  3. 试图做socket_create_listen(105)但得到“权限被拒绝”错误。然后尝试通过WHM启用端口105,将防火墙添加到端口列表(IPv4,IPv4,TCP和UDP)。所有这些仍然没有用,并且没有来自105端口的响应。

  4. 启用allow_url_fopen。

  5. default_socket_timeout设置为300。

  6. 尝试了这个答案:https://stackoverflow.com/a/7118802(我更改的参数是URL和端口 - 我更改为105.其他参数我保持完全相同,也许这是一个错误?)

  7. 根据其他一些SO答案,尝试使用https,但不起作用。尝试添加www。但该URL甚至不存在。

  8. 根据这个回答尝试回显file_get_contents():https://stackoverflow.com/a/14729295/525445 - 它给了我一个空白的屏幕。

  9. 试过:Fatal error: Uncaught SoapFault exception: [WSDL]导致了

  10.   

    致命错误:未捕获的SoapFault异常:[HTTP]无法连接   宿主

    1. 尝试使用cURL获取它,如下所示:https://stackoverflow.com/a/5311925/525445我得到的回复是bool(false)

1 个答案:

答案 0 :(得分:0)

我今天遇到了完全相同的问题。在我的情况下,原因是更高的一些步骤。这是一个magento安装,它不起作用,因为我没有白名单api呼叫(即使我列入我的IP列表,奇怪的是还不够)。对我来说,修复:

if (file_exists($maintenanceFile) && !in_array($ip, $allowed) && !strstr($_SERVER['REQUEST_URI'], 'v2_soap')) {
    include_once dirname(__FILE__) . '/errors/503.php';
    exit;
}

做到了。

如果你不使用magento,这对你来说可能是有趣的,因为它表明,原因可能在于索引或htaccess文件,wdsl本身之上的层。使用浏览器,我可以访问该地址,就像你一样。所以也许系统中有一个控制开关,可以杀死请求。