2010-01-04 20 views
6

Tratando de hacer la conexión SOAP a un https: // fuente WSDL a través de PHP/Win32, pero obtengo el error:PHP de SOAP no se puede conectar a una fuente de WSDL SSL

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

Si intento de salvar el WSDL localmente y acceda entonces, la propiedad SoapFault->faultstring tiene el mensaje "El soporte SSL no está disponible en esta compilación".

Después de buscar en Google, parece que PHP SOAP no se puede conectar a una fuente HTTPS. HTTP está bien, sin embargo.

¿Existe una solución para esto? ¿O hay una versión/módulo SOAP alternativa que puedo instalar?

+0

Resuelto! Tuve que instalar el módulo PHP "php_openssl" para que esto funcione. Solo habilité el.dll en php.ini. ¡Gracias! –

Respuesta

1

que tenían el mismo problema. Se habilitaron openSSL, cURL, se inició un SoapClient con la opción de ubicación para el certificado almacenado, etc., etc. Lo intenté todo.

Resulta que funciona en modo CLI. Por lo tanto php_sapi = CLI. Como casi siempre ejecutamos nuestras llamadas a servicios web como una tarea programada cronjob en Windows, esto no es realmente algo malo. ¡Estaba realmente contento de que funcione!

Actualización: Bien, resulta que cuando PHP se ejecuta como un módulo de Apache, usa las bibliotecas de opensll requeridas libeay32.dll y ssleay32.dll de la instalación de Apache. Al usar PHP en CLI, se utilizan las bibliotecas del directorio/instalación de PHP. Sobrescribir los 2 dlls de Apache con los dlls del directorio de PHP hizo el truco. Ahora también se ejecuta bajo Apache. Por lo tanto, su versión de PHP debe coincidir con las DLL de trabajo para la versión específica. Cuando todavía no funciona en la interfaz web. Verifique que Apache no esté cargando estos dlls desde un directorio del sistema de Windows, especificado anteriormente en la ruta definida por el sistema, que apache.

15

HTTPS soporte para SOAP en PHP5

Si usted está viendo mensajes de error por perder https envolturas cuando se trata de utilizar el jabón (”No se puede encontrar el envoltorio‘https’- ¿Ha olvidado para habilitó cuando configuró PHP? "o" [HTTP] compatibilidad con SSL no está disponible en esta compilación "), no ha instalado las bibliotecas SSL para admitir transacciones seguras. extensión

  1. Descomentar = php_soap.dll en su php.ini

  2. Descomentar extensión = php_openssl.dll en su php.ini

  3. Copia ssleay32.dll y libeay32.dll a su directorio windows system32

  4. Reinicia apache, et voila!

Originalmente había encontrado esta respuesta en: http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

+0

He estado golpeando mi cabeza contra la pared. Finalmente encontré esto, y funcionó, gracias. – KacieHouser

+0

habilitando php_openssl trabajado en mi caso. ¡muchas gracias! – sladda

+1

Sí, los pasos 2 y 4 son suficientes, al menos en la versión actual de xampp. – Brilliand

Cuestiones relacionadas