2010-01-04 3 views
6

Essayer d'établir une connexion de savon à un https: // source WSDL via PHP/Win32, mais l'erreur persiste:PHP SOAP ne peut pas se connecter à une source WSDL SSL

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "https://...

Si je tente de sauver le WSDL localement et y accéder alors, la propriété SoapFault->faultstring a le message "Le support SSL n'est pas disponible dans cette version". Après quelques recherches sur Google, il semble que PHP SOAP ne puisse pas se connecter à une source HTTPS. HTTP est OK, cependant.

Y a-t-il une solution de contournement pour cela? Ou existe-t-il une autre version SOAP/module que je peux installer?

+0

Résolu! J'ai dû installer le module PHP "php_openssl" pour que cela fonctionne. Juste activé le.dll dans php.ini. Merci! –

Répondre

1

J'ai eu le même problème. openSSL, cURL ont été activés, initié un SoapClient avec option d'emplacement pour être certifié certifié, etc, etc .. tout essayé.

Il s'avère que cela fonctionne en mode CLI. Ainsi php_sapi = CLI. Comme nous exécutons presque toujours nos appels webservices en tant que cronjob, tâche planifiée dans Windows, ce n'est pas vraiment une mauvaise chose. J'étais vraiment content de le faire fonctionner! Ok, il s'avère que lorsque PHP s'exécute en tant que module Apache, il utilise les bibliothèques libérées par opensll libeay32.dll et ssleay32.dll à partir de l'installation d'Apache. Lors de l'utilisation de PHP en CLI utilise les bibliothèques du répertoire PHP/install. L'écrasement des 2 DLLs Apache avec les DLL du répertoire PHP a fait l'affaire. Il fonctionne également sous Apache. Donc, votre version de PHP devrait correspondre aux dll de travail pour la version spécifique. Quand cela ne fonctionne toujours pas dans l'interface web. Vérifiez qu'Apache ne charge pas ces DLL à partir d'un répertoire système Windows, spécifié précédemment dans votre chemin d'accès défini par le système, qui est repris par Apache.

15
support HTTPS

pour SOAP dans PHP5

Si vous voyez des messages d'erreur sur l'absence wrappers https lorsque vous essayez d'utiliser SOAP (» Impossible de trouver l'emballage « https » - Vous avez oublié de l'activer lorsque vous avez configuré PHP? "ou" Le support SSL [HTTP] n'est pas disponible dans cette version "), vous n'avez pas installé les bibliothèques SSL pour prendre en charge les transactions sécurisées.

  1. Uncomment extension = php_soap.dll dans votre php.ini

  2. Uncomment extension = php_openssl.dll dans votre php.ini

  3. Copie ssleay32.dll et libeay32.dll à votre répertoire Windows system32

  4. Redémarrez apache, et voilà!

Au départ, je trouve cette réponse à: http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

+0

Je me suis cogné la tête contre le mur. J'ai finalement trouvé ça, et ça a marché, merci. – KacieHouser

+0

permettant php_openssl travaillé dans mon cas. Merci beaucoup! – sladda

+1

Oui, les étapes 2 et 4 sont suffisantes, au moins dans la version actuelle de xampp! – Brilliand

Questions connexes