2017-06-28 41 views
0

SoapClientおよびPHP 7.0でwsdlの解析に問題がありました。このエラーを取得エラーPHP 7.0およびSSL TLS 1.0

イム:

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で、それはOKに動作します。

私はlaravel 5.4を使用していて、私のコードは次のとおりです。私は、そのウェブサイトがSSL TLS 1.0の下にあることに気づいた

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

。 PHPを5.6に変更すると完璧に動作しますが、PHP 7.0では動作しません。

私は、この他のWSDLに変更した場合:

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

すべてが正常に動作します。

はありがとう

+0

は、おそらく非機能URLは、私はそれが古いTLSによって引き起こされると考え、そのドメイン –

+0

のための有効なSSL証明書を与えていないサーバーで間違っているすべての警告を無視するように確かに最後の解決策でなければなりませんバージョンと使用される絶対暗号が含まれます。おそらく、あなたはウェブサーバーのためのより良い設定をするためにそれらを書くことができます。 – Stony

答えて

0

あなたは悪い証明書を無視することを選択することができる:証明書を修正するために、あなたはSOAPサーバーへのアクセス権を持つべきではない、これは解決策になる

$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 
     ) 
     ) 
    ) 
    ) 
); 

を、またはすることができますelsewiseサーバーが証明書を受け入れるようにします。

これは、あなたが何かが

+0

しかし、証明書は正しいです。そして、そうすると、検証を無効にします。 – Stony

+0

https://stackoverflow.com/questions/12373328/how-do-i-get-the-php-soap-client-to-communicate-with-a-service-running-over-ssl –

+0

このようにして、問題は私が関数を呼び出すときに来る。 > __コール( "GenerarRetiros"、配列($ paramsは)、[ 'soap_version' => SOAP_1_2、 'stream_context' => stream_context_create( 配列( - $応答=の$ this - >クライアント:ここでは、コードです'ssl' =>配列( 'verify_peer' => false、 'verify_peer_name' => false ) ) ) ]); –

関連する問題