繁体   English   中英

PHP SOAP无法连接到SSL WSDL源

[英]PHP SOAP cannot connect to an SSL WSDL source

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

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

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

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

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

PHP5中对SOAP的HTTPS支持

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

  1. 在php.ini中取消注释extension = php_soap.dll

  2. 在php.ini中取消注释extension = php_openssl.dll

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

  4. 重启apache,等等!

我最初的答案是: http//webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

我有同样的问题。 启用了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选取。

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

http://nusoap.sourceforge.net/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM