【发布时间】:2013-11-19 05:47:29
【问题描述】:
我已经在 OS X Mavericks 上安装了 AMPPS,当我尝试使用 SoapClient 类在 PHP 中通过 HTTPS 访问 WSDL 时出现以下错误。
SOAP-ERROR:解析 WSDL:无法从 'https://www.some-domain.com/Webservice.asmx?WSDL' : 加载失败 外部实体 "https://www.some-domain.com/secure/api/Webservice.asmx?WSDL"
在我运行phpinfo() 时启用了OpenSSL、SOAP 和cURL。我可以使用file_get_contents() 很好地检索WSDL 内容。没有防火墙阻止连接。同一网络上的其他计算机可以正常连接。下面是我的代码。它适用于生产服务器以及我使用过的其他几台计算机。
$this->wsdlUrl = 'https://www.some-domain.com/Webservice.asmx?WSDL';
$this->client = new SoapClient($this->wsdlUrl);
$this->client->Connect(array(
/* Login credentials */
));
我还尝试使用将verify_peer 设置为false 的流上下文,但结果相同。正如某些人所建议的那样,增加default_socket_timeout 选项也不起作用。
我知道还有几个其他问题与此错误有关,但我找不到适合我的建议解决方案。
有什么想法吗?提前致谢!
【问题讨论】:
-
看起来 AMPPS 没有 php_openssl 扩展,因此您无法将 SOAP 与 HTTPS 一起使用
-
@Andy,您找到任何解决方案了吗?我也有同样的问题,特别是 OS X 上的 AMPPS。