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.
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);
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
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!