我的问题非常普遍.我在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'等选项).但这对我没有帮助.
这是我第二天尝试解决这个问题,但我做不到.我正在实习,我没有很多经验,所以也许我没有尝试正确找到的解决方案.也许有人可以帮忙.我会很高兴的.
我有类似的问题,我解决了它取消注释 -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)
如果您使用社区版。
归档时间: |
|
查看次数: |
24982 次 |
最近记录: |