错误PHP 7.0和SSL TLS 1.0

时间:2017-06-28 12:43:36

标签: php ssl soap ssl-certificate php-7

我遇到SoapClient和PHP 7.0的问题来解析wsdl。

我收到此错误:

SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl' : failed to load external entity "https://ws.ocasa.com/testecommerce/service.asmx?wsdl"

如果您将此URL放在浏览器中,您可以看到SOAP,而且在SoapUI中它可以正常工作。

我正在使用laravel 5.4,我的代码是:

$client = new \SoapClient('https://ws.ocasa.com/testecommerce/service.asmx?wsdl',
    ['soap_version'=>SOAP_1_2]);

我注意到该网站属于SSL TLS 1.0。如果我将PHP更改为5.6,它可以完美地运行,但是使用PHP 7.0它不起作用。

如果我改用其他WSDL:

https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL

一切正常。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以选择忽略不良证书:

$endpoint = new SOAPClient($url,
    array(
      'soap_version'=>SOAP_1_2,
      'stream_context' => stream_context_create(
        array(
          'ssl' => array(
            'verify_peer' => false, 
            'verify_peer_name' => false
          )
        )
      )
    )
  );

如果您无法访问soap服务器来更正证书,或者能够让您的服务器接受证书,这将是一个解决方案。

这应该是最后一个解决方案,因为你确实忽略了所有错误的警告