尝试通过PHP / Win32与https:// WSDL源建立Soap连接,但不断收到错误:
警告:SoapClient :: SoapClient()[soapclient.soapclient]:I / O警告 :无法加载外部实体“https:// ...
如果我尝试在本地保存WSDL并访问它,则SoapFault->faultstring
属性会显示消息“此支持中没有SSL支持”。
经过一些谷歌搜索后,似乎PHP SOAP无法连接到HTTPS源。但是HTTP没问题。
有解决方法吗?或者我可以安装另一个SOAP版本/模块吗?
答案 0 :(得分:15)
PHP5中对SOAP的HTTPS支持
如果您在尝试使用SOAP时看到有关丢失https包装器的错误消息(“无法找到包装器”https“ - 您是否忘记在配置PHP时启用它?”或“[HTTP] SSL支持是在此版本中不可用“),您尚未安装SSL库以支持安全事务。
取消注释 延长= php_soap.dll 在你的php.ini
取消注释 延长= php_openssl.dll 在你的php.ini
复制 ssleay32.dll 和 的libeay32.dll 到你的windows system32目录
重新启动apache,et voila!
我最初在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: