Maison >développement back-end >tutoriel php >Pourquoi ma connexion PHP SOAP échoue-t-elle avec « SOAP-ERROR : Analyse WSDL : Impossible de charger à partir de [URL] : échec du chargement de l'entité externe [URL] » ?

Pourquoi ma connexion PHP SOAP échoue-t-elle avec « SOAP-ERROR : Analyse WSDL : Impossible de charger à partir de [URL] : échec du chargement de l'entité externe [URL] » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 21:56:03740parcourir

Why does my PHP SOAP connection fail with

Analyse des défauts SOAP PHP WSDL : échec du chargement de l'entité externe

Lorsque vous essayez d'établir une connexion SOAP à l'aide de PHP, vous pouvez rencontrer l'erreur « ERREUR SOAP : analyse WSDL : chargement impossible à partir de [URL] : échec du chargement de l'entité externe [URL] ». Cette erreur indique que le client SOAP ne parvient pas à accéder au fichier WSDL référencé dans le constructeur du client.

Étapes de dépannage :

  1. Assurez-vous que le WSDL Le fichier est disponible et accessible : Vérifiez que le fichier WSDL spécifié dans l'URL du constructeur du client existe au chemin spécifié et est accessible par le client SOAP.
  2. Désactivez la vérification SSL (problème de sécurité) : Si vous utilisez PHP 5.6.5 ou version ultérieure et établissez une connexion SOAP 1.2, l'ajout de paramètres SSL au constructeur client peut résoudre le problème :
<code class="php">$opts = array(
    'ssl' => array(
        'ciphers' => 'RC4-SHA',
        'verify_peer' => false,
        'verify_peer_name' => false
    )
);

$params = array(
    'encoding' => 'UTF-8',
    'verifypeer' => false,
    'verifyhost' => false,
    'soap_version' => SOAP_1_2,
    'trace' => 1,
    'exceptions' => 1,
    'connection_timeout' => 180,
    'stream_context' => stream_context_create($opts)
);

$wsdlUrl = $url . '?WSDL';
$oSoapClient = new SoapClient($wsdlUrl, $params);</code>

Remarque : La désactivation de la vérification SSL constitue un risque pour la sécurité et ne doit pas être utilisée dans les environnements de production.

  1. Vérifiez le format du fichier WSDL : Assurez-vous que le fichier WSDL est un document XML valide et conforme à la spécification WSDL.
  2. Vérifiez la connectivité réseau : Vérifiez que le client SOAP dispose d'un accès réseau au serveur hébergeant le fichier WSDL.
  3. Envisagez d'utiliser la mise en cache des fichiers WSDL. : L'activation de la mise en cache des fichiers WSDL dans PHP peut empêcher les téléchargements répétés et améliorer les performances :
<code class="php">ini_set("soap.wsdl_cache_enabled", "1");
ini_set("soap.wsdl_cache_ttl", "86400"); // 24 hours</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn