Heim > Backend-Entwicklung > PHP-Tutorial > Warum kann mein SoapClient WSDL unter Linux nicht analysieren, funktioniert aber unter WAMP?

Warum kann mein SoapClient WSDL unter Linux nicht analysieren, funktioniert aber unter WAMP?

Linda Hamilton
Freigeben: 2024-11-08 06:34:02
Original
838 Leute haben es durchsucht

Why Does My SoapClient Fail to Parse WSDL on Linux But Work on WAMP?

SOAP-Fehler: Parsen von WSDL: Laden von WSDL-URL nicht möglich

Frage

Auf einem Linux-Masterserver kann der SoapClient das nicht analysieren WSDL von einer bestimmten URL, was zu folgendem Fehler führt: „SOAP-ERROR: Parsing WSDL: Konnte nicht geladen werden von – funktioniert aber auf WAMP“. Wenn Sie jedoch die URL direkt aufrufen oder Curl über die Befehlszeile verwenden, wird die erwartete XML-Antwort zurückgegeben.

Antwort

Fehlende Benutzeragentenzeichenfolge:

Für In bestimmten PHP-Versionen sendet der SoapClient möglicherweise standardmäßig keine HTTP-Benutzeragenteninformationen. Dies kann zu Problemen mit dem verwendeten Webdienst führen.

Lösung:

Benutzeragenten explizit mithilfe eines Kontextstroms festlegen:

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

Webdienstprobleme:

Darüber hinaus wurde festgestellt, dass der betreffende Webdienst Probleme mit IPv6-Anfragen ohne Benutzeragentenzeichenfolge hatte. Um dies zu überprüfen, versuchen Sie die folgenden Befehle auf dem Linux-Host:

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

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

Die IPv6-Anfrage ohne Benutzeragenten schlägt fehl, während alle anderen Anfragen erfolgreich sind. Dies deutet darauf hin, dass der Linux-Host die Domäne des Webdienstes in seine IPv6-Adresse auflöst und der SoapClient standardmäßig keine Benutzeragentenzeichenfolge hinzugefügt hat.

Das obige ist der detaillierte Inhalt vonWarum kann mein SoapClient WSDL unter Linux nicht analysieren, funktioniert aber unter WAMP?. 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