【问题标题】:Error using SoapClient in PHP and AMPPS on OS X在 OS X 上的 PHP 和 AMPPS 中使用 SoapClient 时出错
【发布时间】: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。

标签: php macos soap https wsdl


【解决方案1】:

我相信这会为您指明正确的方向:

try {
    $sc= new SoapClient('https://www.some-domain.com/Webservice.asmx?WSDL');
    $sc->Connect(/* Login credentials */);
} catch (SoapFault $fault) {
    print_r($fault->faultstring);
}

【讨论】:

  • 这给出了与问题中的完全相同的错误消息。
猜你喜欢
  • 2016-02-06
  • 2012-10-06
  • 2014-02-12
  • 2013-10-07
  • 1970-01-01
  • 2017-02-05
  • 2018-12-09
  • 2012-09-12
  • 2016-12-06
相关资源
最近更新 更多