2010-01-04 154 views
6

试图让SOAP连接到HTTPS:通过PHP/Win32的// WSDL来源,但不断收到错误:PHP SOAP无法连接到SSL WSDL源

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "https://...

如果我尝试保存WSDL然后在SoapFault->faultstring属性中显示消息“SSL支持在此版本中不可用”。

经过一番Google搜索后,似乎PHP SOAP无法连接到HTTPS源。 HTTP虽然可以。

是否有解决方法?或者是否有可以安装的替代SOAP版本/模块?

+0

解决了!我必须安装“php_openssl”PHP模块才能正常工作。只是启用了。在php.ini中的DLL。谢谢! – 2010-01-04 18:24:40

回答

1

我有同样的问题。 openSSL,cURL已启用,启动了一个SoapClient以及位置选项以存储已验证的等,等等。尝试了一切。

原来它在CLI模式下工作。因此php_sapi = CLI。 因为我们几乎总是将我们的webservices调用作为cronjob,Windows中的计划任务来运行,所以这并不是一件坏事。我真的很高兴得到它的工作!

更新: 好的,当PHP作为一个Apache模块运行时,它使用opensay所需的库libeay32.dll和ssleay32.dll从Apache安装。在CLI中使用PHP时,使用PHP目录/ install中的库。用PHP目录中的dll覆盖这2个Apache dll确实有窍门。它现在也在Apache下运行。 因此,您的PHP版本应该与特定版本的工作dll相匹配。当它仍然无法在Web界面中工作时。请检查Apache是​​否没有从Windows系统目录加载这些DLL,这些目录是在Apache系统定义的路径中指定的。

15

HTTPS为SOAP

如果您看到了有关试图利用SOAP(”无法找到包装‘https’开头,当缺少HTTPS包装错误消息的支持在PHP5 - 你忘了,当启用您配置了PHP吗?“或”[HTTP] SSL支持在此版本中不可用“),您尚未安装SSL库来支持安全事务。

  1. 取消注释 延长= php_soap.dll 在php.ini

  2. 取消注释 延长= php_openssl.dll 在php.ini

  3. 复制 ssleay32.dll 和 libeay32.dll 到您的windows系统32目录

  4. 重启apache,等voila!

我最初发现这个答案在:http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

+0

我一直在撞墙。我终于找到了这个,它工作,谢谢。 – KacieHouser 2012-10-01 05:00:54

+0

启用php_openssl在我的情况下工作。多谢! – sladda 2012-10-06 12:56:17

+1

是的,第2步和第4步就足够了,至少在当前版本的xampp中! – Brilliand 2012-10-10 00:05:15