上で SoapClient を使用しようとしたときLinux マスターサーバーでは、「SOAP-ERROR: WSDL の解析中: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' からロードできませんでした」というエラー メッセージが表示される場合があります。この問題は、スクリプトが WAMP サーバー上で正しく機能しているにもかかわらず発生します。
この問題に対処するには、サーバーと WAMP 環境の間の PHP バージョンの潜在的な違いを調査することをお勧めします。古い PHP バージョンには、SoapClient リクエストでユーザー エージェント文字列を送信するために必要な機能が欠けている可能性があります。
この場合、ユーザー エージェント文字列を明示的に指定すると問題を解決できます。これは、以下に示すように、ストリーム コンテキストを使用することで実現できます。
try { $opts = array( 'http' => array( 'user_agent' => 'PHPSoapClient' ) ); $context = stream_context_create($opts); $wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'; $soapClientOptions = array( 'stream_context' => $context, 'cache_wsdl' => WSDL_CACHE_NONE ); $client = new SoapClient($wsdlUrl, $soapClientOptions); $checkVatParameters = array( 'countryCode' => 'DK', 'vatNumber' => '47458714' ); $result = $client->checkVat($checkVatParameters); print_r($result); } catch(Exception $e) { echo $e->getMessage(); }
また、この問題は、IPv6 経由の HTTP とユーザー エージェント文字列の欠如の組み合わせによって発生する可能性があることが確認されています。リクエストの中で。関連する Web サービスは、これらの条件下で問題を引き起こす可能性があります。
これを確認するには、Linux ホストで次のコマンドを実行します。
curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
IPv6 リクエストが失敗した場合は、ユーザー エージェントを追加してみてください。文字列:
curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
両方の IPv4 リクエストは成功するはずです:
curl -A '' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl curl -A 'cURL User Agent' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
これらの観察結果があればこれが当てはまる場合、Linux ホストが URL を IPv6 アドレスに解決しており、サーバー上の SoapClient バージョンがデフォルトでユーザー エージェント文字列を追加していない可能性があります。
以上がスクリプトが WAMP で動作するときに Linux サーバーで「SOAP-ERROR: Parsing WSDL: Couldn't Load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。