2016-04-26 115 views
1

移动到新的OVH VPS机器后,我有一个使用API​​的WSDL连接出现问题,所以这可能是某种奇怪的错误配置。使用一个WSDL API SoapClient“无法连接到主机”异常

其他我使用SoapClient的WSDL,工作正常,没有问题。我可以在地址上使用file_get_contents,但是当我使用SoapClient时,当尝试使用该API中的过程时,我会发出异常“无法连接到主机”。

任何想法?我尝试了一些stream_context以及一些SSL选项。最有趣的是,另一个OVH VPS工作正常。

系统是Debian 8,板载PHP 5.6.19。

编辑部地址的WSDL的是在这里:https://api-test.paczkawruchu.pl/WebServicePwR/WebServicePwRTest.asmx?WSDL

回答

2

与WSDL提供商检查日志双方协商后,我们发现anwser。它看起来像PHP 5.6有一些问题,你必须改变参数到SOAP 1.2。这最终解决了这个问题。解决方案可以在这里找到,在第一评论: SOAP PHP fault parsing WSDL: failed to load external entity?

// options for ssl in php 5.6.5 
$opts = array(
    'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false) 
); 
// SOAP 1.2 client 
$params = array ('encoding' => 'UTF-8', 'verifypeer' => false, 'verifyhost' => false, 'soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1, "connection_timeout" => 180, 'stream_context' => stream_context_create($opts)); 
$oSoapClient = new SoapClient ($url . "?WSDL", $params); 
+0

或者只是$ PARAMS = [ 'soap_version'=> SOAP_1_2, 'stream_context'=> stream_context_create([ 'SSL'=> [ 'verify_peer'=>虚拟]])] 对我来说... –

+2

但最好:将“openssl.cafile = C:/path/to/ssl/cacert.pem”添加到php.ini! –