Estoy ejecutando PHP Versión 5.6.3 como parte de XAMPP en Windows 7.
Cuando intento usar la API de Mandrill, aparece el siguiente error:
Excepción no detectada 'Mandrill_HttpError' con el mensaje 'Error en la llamada API a los mensajes / plantilla de envío: problema con el certificado SSL: no se puede obtener el certificado del emisor local'
Ya probé todo lo que leí en StackOverflow, incluida la adición de lo siguiente al archivo php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
Y, por supuesto, descargó en esa ubicación el archivo cacert.pem de http://curl.haxx.se/docs/caextract.html
pero después de todo eso, reinició XAMPP y el servidor Apache pero aún obtenía el mismo error
Realmente no sé qué más probar.
¿Alguien puede aconsejar sobre qué más puedo probar?
Respuestas:
¡Finalmente conseguí que esto funcione!
Descargue el paquete de certificados .
Ponlo en alguna parte. En mi caso, ese fue el
c:\wamp\
directorio (si está utilizando Wamp 64 bit, entonces esc:\wamp64\
).Habilite
mod_ssl
en Apache yphp_openssl.dll
enphp.ini
(descomente quitándolos;
al principio). Pero tenga cuidado, mi problema fue que tenía dosphp.ini
archivos y necesito hacer esto en los dos. Uno es el que obtiene del icono de la barra de tareas de WAMP, y otro es, en mi caso, enC:\wamp\bin\php\php5.5.12\
Agregue estas líneas a su certificado en ambos
php.ini
archivos:Reinicie los servicios de Wamp.
fuente
;
comienzo y me llevó horas darme cuenta de que significa que es un comentario. por lo que para noobs como yo, hay que quitar el;
asíBut be careful, my problem was that I had two php.ini files and I need to do this in both of them. One is the one you get from your WAMP taskbar icon, and another one is, in my case, in C:\wamp\bin\php\php5.5.12\
Tuve el mismo problema en el archivo Mandrill.php después de la línea número 65 donde dice $ this-> ch = curl_init ();
Agregue las siguientes dos líneas:
Esto resolvió mi problema y también envió un correo electrónico usando localhost, pero sugiero NO usarlo en la versión en vivo en vivo. En su servidor en vivo, el código debería funcionar sin este código.
fuente
CURLOPT_SSL_VERIFYPEER
afalse
trabajar.Gracias @Mladen Janjetovic,
Su sugerencia funcionó para mí en mac con ampps instalado.
Copiado: http://curl.haxx.se/ca/cacert.pem
A:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
Y actualizado
php.ini
con esa ruta y reinicia Apache:Y aplicó la misma configuración en la instalación de Windows AMPPS y funcionó perfectamente también.
: Lo mismo para wamp.
Si está buscando generar un nuevo certificado SSL usando SAN para localhost, los pasos en esta publicación funcionaron para mí
Centos 7 / Vagrant / Chrome Browser
.fuente
Cuando vea la página http://curl.haxx.se/docs/caextract.html , notará en letras grandes una sección llamada:
Léalo, luego descargue la versión de los certificados que incluye los certificados 'RSA-1024'. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Esos trabajarán con Mandrill.
Deshabilitar SSL es una mala idea.
fuente
Los pasos anteriores, aunque útiles, no funcionaron para mí en Windows 8. No sé la correlación, pero los pasos a continuación funcionaron. Básicamente un cambio en el archivo cacert.pem. Espero que esto ayude a alguien.
fuente
Encontré una nueva solución sin ninguna certificación requerida para llamar a curl, solo agregue un código de dos líneas.
fuente
Si no tiene acceso a php.ini , agregar este código (después de su
$ch = curl_init();
línea) funciona para mí:Luego, solo tendrá que descargar ca-bundle.crt y guardarlo en la ubicación que especificó
$certificate_location
.fuente
Tengo una solución muy simple de este problema. Puede hacerlo sin ningún archivo de certificado.
Vaya a Laravel Root Folder -> Vender -> guzzlehttp -> guzzle -> src
abierta Client.php
buscar $ default Array. que se ve así ...
Ahora el trabajo principal es cambiar el valor de la clave de verificación .
Entonces, después de esto, no verificará el Certificado SSL para la Solicitud CURL ... Esta Solución me funciona. Encuentro esta solución después de muchas investigaciones ...
fuente
elaborando las respuestas anteriores para la implementación del servidor.
debe hacer el truco para el entorno de desarrollo sin comprometer el servidor cuando se implementa.
fuente
Intenté esto funciona
abierto
y cambia esto
a esto
fuente
Tuve el mismo problema durante la creación de mi aplicación en AppVeyor.
c:\php
echo extension=php_openssl.dll >> c:\php\php.ini
echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
fuente
Si ninguna de las soluciones anteriores funciona, intente actualizar su instalación de XAMPP a una versión más nueva.
Estaba ejecutando XAMPP con php 5.5.11, el mismo código exacto no funcionó, actualicé a XAMPP con php 5.6.28 y las soluciones anteriores funcionaron.
Además, solo actualizar PHP no funcionó tampoco parece una combinación de configuraciones de apache y php en esa versión de XAMPP.
Espero que ayude a alguien.
fuente
Recibí el error como:
Estoy usando la máquina de Windows. Entonces seguí los pasos a continuación.
Espero que pueda ayudar a alguien
fuente
Estaba enfrentando un problema como este en mi sistema local pero no en el servidor en vivo. También mencioné otra solución en esta página antes, pero que no funcionaba en localhost. Así que encuentre una nueva solución de esto, que funcione en el servidor localhost-WAMP .
a veces el sistema no pudo encontrar su cacert.pem en su disco. para que pueda definir esto en su código donde va a usar CURL
revisa este código de CURL .
pero esta solución puede no funcionar en el servidor en vivo. debido a la ruta absoluta de cacert.pem
fuente
Tengo una solución adecuada para este problema, intentemos comprender la causa raíz de este problema. Este problema se produce cuando los servidores remotos SSL no se pueden verificar utilizando certificados raíz en el almacén de certificados de su sistema o no se instala SSL remoto junto con los certificados de cadena. Si tiene un sistema Linux con acceso ssh raíz, en este caso puede intentar actualizar su almacén de certificados con el siguiente comando:
update-ca-certificates
Si aún así, no funciona, entonces debe agregar el certificado raíz e intermedio del servidor remoto en su tienda de certificados. Puede descargar certificados raíz e intermedios y agregarlos en el directorio / usr / local / share / ca-certificados y luego ejecutar el comando
update-ca-certificates
. Esto debería funcionar. Del mismo modo, para Windows puede buscar cómo agregar certificados raíz e intermedios.La otra forma de resolver este problema es pedirle al equipo del servidor remoto que agregue el certificado SSL como un paquete de certificado raíz de dominio, certificado intermedio y certificado raíz.
fuente
para guzzle puedes probar esto:
probado en guzzle / guzzle 3. *
fuente