Lorsqu'ils tentent d'utiliser un SoapClient sur un serveur maître Linux, les utilisateurs peuvent rencontrer le message d'erreur "SOAP-ERROR : Analyse WSDL : Impossible de charger à partir de 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'." Ce problème survient malgré le bon fonctionnement du script sur un serveur WAMP.
Pour résoudre ce problème, il est recommandé d'explorer les différences potentielles dans les versions PHP entre le serveur et l'environnement WAMP. Les anciennes versions de PHP peuvent ne pas disposer des fonctionnalités nécessaires pour envoyer une chaîne d'agent utilisateur avec les requêtes SoapClient.
Si tel est le cas, spécifier explicitement une chaîne d'agent utilisateur peut résoudre le problème. Ceci peut être réalisé en utilisant un contexte de flux, comme illustré ci-dessous :
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(); }
Alternativement, il a été observé que ce problème peut survenir en raison d'une combinaison de HTTP sur IPv6 et de l'absence de chaîne d'agent utilisateur. dans la demande. Le service Web impliqué peut présenter des problèmes dans ces conditions.
Pour confirmer cela, exécutez les commandes suivantes sur l'hôte Linux :
curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
Si la requête IPv6 échoue, essayez d'ajouter un agent utilisateur string :
curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
Les deux requêtes IPv4 devraient réussir :
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
Si ces observations sont vraies, c'est il est probable que l'hôte Linux résout l'URL en son adresse IPv6 et que la version SoapClient sur le serveur n'ajoute pas de chaîne d'agent utilisateur par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!