> 백엔드 개발 > PHP 튜토리얼 > 스크립트가 WAMP에서 작동할 때 'SOAP-ERROR: WSDL 구문 분석: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'에서 로드할 수 없습니다.'가 Linux 서버에서 발생하는 이유는 무엇입니까?

스크립트가 WAMP에서 작동할 때 'SOAP-ERROR: WSDL 구문 분석: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'에서 로드할 수 없습니다.'가 Linux 서버에서 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-13 12:46:02
원래의
553명이 탐색했습니다.

Why does

SOAP-ERROR: WSDL 구문 분석: "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"

Linux 마스터 서버에서 SoapClient를 사용하려고 하면 사용자에게 "SOAP-ERROR: WSDL 구문 분석: 'http://ec.europa.eu/에서 로드할 수 없습니다. Taxation_customs/vies/checkVatService.wsdl'." 이 문제는 WAMP 서버에서 스크립트가 올바르게 작동함에도 불구하고 발생합니다.

이 문제를 해결하려면 서버와 WAMP 환경 간의 PHP 버전의 잠재적인 차이점을 살펴보는 것이 좋습니다. 이전 PHP 버전에는 SoapClient 요청과 함께 사용자 에이전트 문자열을 보내는 데 필요한 기능이 부족할 수 있습니다.

이 경우 사용자 에이전트 문자열을 명시적으로 지정하면 문제를 해결할 수 있습니다. 이는 아래 그림과 같이 스트림 컨텍스트를 사용하여 달성할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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의 조합과 사용자 에이전트 문자열의 부재로 인해 발생할 수 있는 것으로 관찰되었습니다. 요청에. 관련 웹 서비스는 이러한 조건에서 문제를 나타낼 수 있습니다.

이를 확인하려면 Linux 호스트에서 다음 명령을 실행하십시오.

1

curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

로그인 후 복사

IPv6 요청이 실패하면 사용자 에이전트를 추가해 보십시오. 문자열:

1

curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

로그인 후 복사

두 IPv4 요청이 모두 성공해야 합니다.

1

2

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 호스트가 IPv6 주소 및 SoapClient에 대한 URL을 확인하고 있을 가능성이 높습니다. 서버의 버전은 기본적으로 사용자 에이전트 문자열을 추가하지 않습니다.

위 내용은 스크립트가 WAMP에서 작동할 때 'SOAP-ERROR: WSDL 구문 분석: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'에서 로드할 수 없습니다.'가 Linux 서버에서 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿