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(); }
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
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
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
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!