Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SOAP错误-解析SSLv3中的WSDL_Php_Apache_Laravel_Soap_Wsdl - Fatal编程技术网

Php SOAP错误-解析SSLv3中的WSDL

Php SOAP错误-解析SSLv3中的WSDL,php,apache,laravel,soap,wsdl,Php,Apache,Laravel,Soap,Wsdl,我在SoapClient(PHP7.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放在浏览器中,您可以看到

我在SoapClient(PHP7.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]);
我注意到那个网站在SSLv3下。为了找出问题所在,我还注意到我无法获取WSDL的内容:

        $content = file_get_contents('https://ws.ocasa.com/testecommerce/service.asmx?wsdl');
我得到了这个错误

file_get_contents(): Failed to enable crypto
我不知道它是否在我的PHP.ini中。但如果我更改为另一个WSDL:

https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL
一切正常,解析和获取内容


谢谢

所以我通过添加可选参数SSL解决了这个问题:

$wurl = 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl';
$opts = array(
            'ssl' => array('ciphers' => 'RC4-SHA')
        );
$this->soapClient = new SoapClient($wurl, array('trace' => 1,
            'exception' => 1, 'soap_version' => SOAP_1_2, 'connection_timeout' => 60, 'stream_context' => stream_context_create($opts)));

感谢您的帮助!可能重复!。我编辑了我的文章,以便您可以看到我的问题不是我无法获取wsdl的内容,而是我的SoapClient不能使用该wsdl。在你发给我的帖子中,解释了如何以不同的方式获取内容,我的想法是提供更多关于我的情况的信息,这样也许有人可以知道发生了什么。谢谢你不,您的问题是,由于SSLv3(可能),PHP无法从该服务器获取内容。它与SoapClient无关<代码>文件\u获取\u内容():无法启用加密非常清晰。尝试类似的方法,看看是否有帮助您还可以在此处找到有关PHP如何处理SSL证书的更多信息:My PHP is 7.0。我发现,问题就出在这里,SSL是TLS1.0,在PHP7.0中不起作用。