PHP SOAP无法连接到SSL WSDL源

时间:2010-01-04 17:47:03

标签: php soap ssl

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

  

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

如果我尝试在本地保存WSDL并访问它,则SoapFault->faultstring属性会显示消息“此支持中没有SSL支持”。

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

有解决方法吗?或者我可以安装另一个SOAP版本/模块吗?

3 个答案:

答案 0 :(得分:15)

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,et voila!

  5. 我最初在http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

    找到了这个答案

答案 1 :(得分:1)

我遇到了同样的问题。启用了openSSL,cURL,启动了一个SoapClient,其中包含了存储认证的位置选项等等。尝试了一切。

结果证明它在CLI模式下有效。因此php_sapi = CLI。 由于我们几乎总是将我们的webservices调用作为cronjob,Windows中的计划任务运行,这并不是一件坏事。我真的很高兴让它发挥作用!

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

答案 2 :(得分:0)

我使用NuSOAP成功使用SSL和SOAP:

http://nusoap.sourceforge.net/