【问题标题】:PHP SOAP cannot connect to an SSL WSDL sourcePHP SOAP 无法连接到 SSL WSDL 源
【发布时间】:2010-01-04 17:47:02
【问题描述】:

尝试通过 PHP/Win32 与 https:// WSDL 源建立 Soap 连接,但不断收到错误消息:

警告:SoapClient::SoapClient() [soapclient.soapclient]:I/O 警告 : 未能加载外部实体“https://...

如果我尝试在本地保存 WSDL 并随后访问它,SoapFault->faultstring 属性会显示消息“SSL 支持在此构建中不可用”。

经过一些谷歌搜索,PHP SOAP 似乎无法连接到 HTTPS 源。不过 HTTP 没问题。

有解决办法吗?或者我可以安装其他 SOAP 版本/模块吗?

【问题讨论】:

  • 解决了!我必须安装“php_openssl”PHP 模块才能工作。刚刚在 php.ini 中启用了 .dll。谢谢!

标签: php soap ssl


【解决方案1】:

PHP5 中对 SOAP 的 HTTPS 支持

如果您在尝试使用 SOAP 时看到有关缺少 https 包装器的错误消息(“无法找到包装器“https”——您是否在配置 PHP 时忘记启用它?”或“[HTTP] SSL 支持是在此版本中不可用”),您尚未安装 SSL 库来支持安全事务。

  1. 取消注释 扩展=php_soap.dll 在你的 php.ini 中

  2. 取消注释 扩展=php_openssl.dll 在你的 php.ini 中

  3. 复制 ssleay32.dll 和 libeay32.dll 到你的 windows system32 目录

  4. 重启 apache,等等!

我最初在以下位置找到了这个答案:http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

【讨论】:

  • 我一直在用头撞墙。我终于找到了,它成功了,谢谢。
  • 是的,第 2 步和第 4 步就足够了,至少在当前版本的 xampp 中是这样!
  • 对于linux,怎么办?
【解决方案2】:

我遇到了同样的问题。启用了openSSL,cURL,启动了一个SoapClient,可以选择存储证书的位置等等。尝试了一切。

事实证明它确实可以在 CLI 模式下工作。因此 php_sapi = CLI。 由于我们几乎总是将 Web 服务调用作为 cronjob、Windows 中的计划任务运行,因此这并不是一件坏事。我真的很高兴让它工作!

更新: 好的,当 PHP 作为 Apache 模块运行时,它使用了来自 Apache 安装的 opensll 所需库 libeay32.dll 和 ssleay32.dll。在 CLI 中使用 PHP 时,使用 PHP 目录/安装中的库。用 PHP 目录中的 dll 覆盖 2 个 Apache dll 就可以了。它现在也在 Apache 下运行。 因此,您的 PHP 版本应该与特定版本的工作 dll 匹配。当它仍然无法在 Web 界面中工作时。请检查 Apache 是否没有从 Windows 系统目录加载这些 dll,该目录之前在系统定义的路径中指定,由 Apache 拾取。

【讨论】:

    【解决方案3】:

    我在使用 NuSOAP 的 SSL 和 SOAP 方面取得了成功:

    http://nusoap.sourceforge.net/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多