错误WSDL:SOAP-ERROR:解析WSDL:无法加载

Kal*_*ine 17 soap magento

我的问题非常普遍.我在stackoverflow上读到了关于这个问题的几乎所有主题,但仍然无法做到.我的代码是:

ini_set("soap.wsdl_cache", "0");
ini_set("soap.wsdl_cache_enabled", "0");
$proxy = new SoapClient('http://Myhostname/api/soap?wsdl');
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

Error WSDL: SOAP-ERROR: Parsing WSDL: Couldn't load from 
'http://Myhostname/api/soap?wsdl' : failed to load external entity 
"http://Myhostname/api/soap?wsdl"
Run Code Online (Sandbox Code Playgroud)

在浏览器中的URL

http://Myhostname/api/soap?wsdl
Run Code Online (Sandbox Code Playgroud)

效果很好(返回xml响应)

我尝试使用此代码来查看PHP是否可以访问此URL:

if (file_get_contents('http://Myhostname/api/soap?wsdl') === false) {
    echo "ERROR: file_get_contents <br/>";
}
Run Code Online (Sandbox Code Playgroud)

它显示我的错误"错误:file_get_contents",所以它不起作用.在论坛上,我看到要解决这个问题,我必须在OS"hosts"文件中添加主机名.所以我做到了.在我的hosts文件中,我添加了这行127.0.0.1 Myhostname

但它仍然无效.然后我将代码中的URL更改为

http://localhost/Myhostname/api/soap?wsdl
Run Code Online (Sandbox Code Playgroud)

但它也不起作用.

我尝试了另一种在互联网上找到的解决方案.对于一些人来说,它有效.在我的网址中,我更改了"?" 字符为'.'.所以我的新网址变成了

http://localhost/Myhostname/api/soap.wsdl
Run Code Online (Sandbox Code Playgroud)

但它也不起作用.

我看到了正式的SOAP文档!并试图以不同的方式创建SoapClient对象(使用'proxy_host'和'proxy_port'等选项).但这对我没有帮助.

这是我第二天尝试解决这个问题,但我做不到.我正在实习,我没有很多经验,所以也许我没有尝试正确找到的解决方案.也许有人可以帮忙.我会很高兴的.

Mar*_*vic 2

我有类似的问题,我解决了它取消注释 -MultiViews 从 .htaccess 文件,然后从本地网站的 Apache 配置。

我的工作 Apache 配置是:

<Directory /var/www/>
        Options Indexes FollowSymLinks -MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

您也可以尝试一下网址:

http://localhost/Myhostname/api.php?type=soap&wsdl
Run Code Online (Sandbox Code Playgroud)

如果您使用社区版。