Heim > Backend-Entwicklung > PHP-Tutorial > Warum tritt „SOAP-ERROR: Parsing WSDL: Couldn't Load from ‚http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'' auf einem Linux-Server auf, wenn das Skript unter WAMP funktioniert?

Warum tritt „SOAP-ERROR: Parsing WSDL: Couldn't Load from ‚http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'' auf einem Linux-Server auf, wenn das Skript unter WAMP funktioniert?

Susan Sarandon
Freigeben: 2024-11-13 12:46:02
Original
508 Leute haben es durchsucht

Why does

SOAP-ERROR: Parsing WSDL: Konnte nicht von „http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl“ geladen werden

Beim Versuch, einen SoapClient auf einem Linux-Masterserver zu verwenden, kann es sein, dass Benutzer auf die Fehlermeldung „SOAP-ERROR: Parsing WSDL: Couldn't Load from 'http://ec.europa.eu/“ stoßen. taxation_customs/vies/checkVatService.wsdl'." Dieses Problem tritt auf, obwohl das Skript auf einem WAMP-Server ordnungsgemäß funktioniert.

Um dieses Problem zu beheben, wird empfohlen, mögliche Unterschiede in den PHP-Versionen zwischen dem Server und der WAMP-Umgebung zu untersuchen. Ältere PHP-Versionen verfügen möglicherweise nicht über die erforderliche Funktionalität, um eine User-Agent-Zeichenfolge mit SoapClient-Anfragen zu senden.

Wenn dies der Fall ist, kann das Problem durch die explizite Angabe einer User-Agent-Zeichenfolge behoben werden. Dies kann durch die Verwendung eines Stream-Kontexts erreicht werden, wie unten dargestellt:

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();
}
Nach dem Login kopieren

Alternativ wurde beobachtet, dass dieses Problem aufgrund einer Kombination aus HTTP über IPv6 und dem Fehlen einer Benutzeragentenzeichenfolge auftreten kann in der Anfrage. Der betroffene Webdienst kann unter diesen Bedingungen Probleme aufweisen.

Um dies zu bestätigen, führen Sie die folgenden Befehle auf dem Linux-Host aus:

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

Wenn die IPv6-Anfrage fehlschlägt, versuchen Sie, einen Benutzeragenten hinzuzufügen string:

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

Beide IPv4-Anfragen sollten erfolgreich sein:

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
Nach dem Login kopieren

Wenn diese Beobachtungen zutreffen, ist es wahrscheinlich, dass der Linux-Host die URL in seine IPv6-Adresse und den SoapClient auflöst Die Version auf dem Server hängt standardmäßig keine Benutzeragentenzeichenfolge an.

Das obige ist der detaillierte Inhalt vonWarum tritt „SOAP-ERROR: Parsing WSDL: Couldn't Load from ‚http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'' auf einem Linux-Server auf, wenn das Skript unter WAMP funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage