Linux 마스터 서버에서 SoapClient를 사용하려고 하면 사용자에게 "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의 조합과 사용자 에이전트 문자열의 부재로 인해 발생할 수 있는 것으로 관찰되었습니다. 요청에. 관련 웹 서비스는 이러한 조건에서 문제를 나타낼 수 있습니다.
이를 확인하려면 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 호스트가 IPv6 주소 및 SoapClient에 대한 URL을 확인하고 있을 가능성이 높습니다. 서버의 버전은 기본적으로 사용자 에이전트 문자열을 추가하지 않습니다.
위 내용은 스크립트가 WAMP에서 작동할 때 'SOAP-ERROR: WSDL 구문 분석: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'에서 로드할 수 없습니다.'가 Linux 서버에서 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!