Código de error PHP cURL 60


85

Al intentar configurar un entorno php en Windows (usando wamp) para usar el SDK de Amazon PHP, cuando intento ejecutar una prueba de muestra, aparece el siguiente error:

Fatal error: Uncaught exception 'cURL_Exception' with message 'cURL resource: Resource id #10; cURL error: SSL certificate problem: unable to get local issuer certificate (cURL error code 60). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.' in C:\wamp\www\AWSSDKforPHP\lib\requestcore\requestcore.class.php on line 848

Ya agregué la siguiente línea a mi php.ini

curl.cainfo = C:\Windows\ca-bundle.crt

cuál es la ubicación de un certificado que creé usando este script VBS VBS-Script

También reinicié mi servicio WAMP.

Referencia de curl de índice PHP


6
En caso de que no le importe el proceso de certificación, puede desactivarlo por completo curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr

Esto me resolvió el problema - stackoverflow.com/a/32095378/178163 Básicamente puede haber 2 archivos php.ini
George Kagan

2
Para aquellos que se encuentran con este problema por primera vez, como lo hice yo, la razón detrás de esto, hasta donde tengo entendido (corríjame si me equivoco), es que, a diferencia de la situación de una conexión HTTPS a través de un navegador, una solicitud CURL no obtiene el certificado del servidor. Entonces, necesitamos descargar manualmente el certificado del sitio y agregarlo al PHP ini. Esta verificación del certificado al final del cliente es parte del proceso de conexión HTTPS y, al parecer, se puede omitir. Aquí es donde curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);entra en escena.
Sandeepan Nath

funcionó como un encanto !!!! ¡Gracias!
Rodrigo Serzedello

Respuestas:


226

Utilice este paquete de certificado raíz de certificado:

https://curl.haxx.se/ca/cacert.pem

Copie este paquete de certificados en su disco. Y usa esto enphp.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
¿Y en caso de que esto no solucione el problema? Configuré curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));y en php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . El archivo está ahí, pero sigo recibiendo el error 60. ¿Me falta algo?
Overflowh

3
@Overflowh hay dos tipos de php.ini: Uno para php-cli segundo para php-web (apache, nginx, ...). Debe configurarlo curl.cainfo = "path_to_cert\cacert.pem"para la web uno. Por otro lado, si puede ver que curl.cainfoes verdadero en la vista de información de php, esa vez podría haber un problema de permiso.
Hüseyin BABAL

Bueno, en realidad no puedo ver curl.cainfoen mi php info. ¿Significa esto que puse el valor en el archivo incorrecto?
Desbordamiento

1
Sí, verifique la ubicación de su archivo php.ini. Necesitas poner eso en la versión web
Hüseyin BABAL

He agregado en apache php.ini, pero esto no funcionó
kasim badami

31

arreglé esto modificando el php.iniarchivo enC:\wamp\bin\apache\apache2.4.9\bin\

curl.cainfo = "C:/wamp/bin/php/php5.5.12/cacert.pem"

Primero lo intenté modificando el php.iniarchivo en C:\wamp\bin\php\php5.5.12\y no funcionó.

espero que esto ayude a alguien que está buscando el derecho php.inide modificar


1
Gracias. Todo lo que necesitó fue descargar el archivo de curl.haxx.se/ca/cacert.pem y configurar la ruta en el archivo apache php.ini como dijiste. Tenga en cuenta que puede poner el cacert en cualquier lugar que desee, solo asegúrese de colocar la ruta correctamente. Además, asegúrese de quitar el punto y coma.
Dan Zuzevich

1
No olvide volver a cargar apache después de esto.
hcker2000

17
php --ini

Esto le dirá exactamente qué archivo php.ini se está cargando, para que sepa cuál modificar. Perdí mucho tiempo cambiando el archivo php.ini incorrecto porque tenía WAMP y XAMPP instalados.

Además, no olvide reiniciar el servidor WAMP (o lo que sea que use) después de cambiar php.ini.


1
salvavidas! 3 malditos días de resolución de problemas y este resulta ser el problema
suo

13

@Overflowh Probé la respuesta anterior también sin suerte. Cambié la versión de php de 5.3.24 a 5.5.8 ya que esta configuración solo funcionará en php 5.3.7 y superior. Luego encontré este http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue . Descargué el cacert.pem desde allí y reemplacé el que había descargado / hecho de curl.hxxx.se vinculado arriba y todo comenzó a funcionar. Estaba tratando de verificar la IPN de la caja de arena de PayPal. Feliz de decir que después del intercambio de .pem todo está bien usando la configuración curl.cainfo en php.ini que aún no estaba en 5.3.24.


2
Estaba enfrentando el mismo problema y lo solucioné simplemente descargando el formulario de archivo .pem mencionado anteriormente. Gracias
saqibahmad

4
¡Jaja, no puedo creer esto! Soy dueño de FLWebsites.biz y me encontré con esta publicación sin saber completamente que me mencionaron ... ¡Escribí ese blog!
HTMLGuy

He estado tratando de resolver el problema, y ​​después de 3-4 horas finalmente encontré esta respuesta. Dije, bueno, ¿por qué no intentar con otro archivo pem de nuevo? Y sorpresa: finalmente funcionó. Gracias por encontrar ese blog :)
Sauleil

Esto resolvió mi problema de cacert.pem en Windows 10, IIS. Gracias.
jacouh

3
Lo siento, eliminé mi sitio. Vaya directamente a la fuente: curl.haxx.se/docs/caextract.html
HTMLGuy


5

Primero, necesitamos descargar este paquete de certificado raíz:

https://curl.haxx.se/ca/cacert.pem

Mueva este archivo a algún lugar, como la carpeta PHP en la carpeta Wamp / Xampp.

Luego edite su "php.ini":

curl.cainfo = "C: /ruta/a/su/cacert.pem"

y

openssl.cafile = "C: /ruta/a/su/cacert.pem"

IMPORTANTE:

Asegúrese de abrir el archivo "php.ini" directamente con el Explorador de Windows. (en mi caso: "C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini").

No utilice el acceso directo a "php.ini" en el menú del icono de Wamp / Xampp en la bandeja del sistema. Este atajo no funcionó en algunos casos que enfrenté.

Después de guardar "php.ini" no es necesario "Reiniciar todos los servicios" en el icono de Wamp o cerrar / volver a abrir CMD.

Prueba con "var_dump (openssl_get_cert_locations ());" y mira la línea: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Hecho.


¡Su nota sobre la apertura del archivo php.ini a través del explorador realmente funcionó! Y finalmente descubrí que el php.ini del icono de wamp tiene una ruta diferente. ¡¡¡Gracias!!!
Doctiger


3

La solución más sencilla al problema es agregar el siguiente comando en el campo.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Al usar esto, no será necesario agregar ningún certificado ni nada.


2

Agregue lo siguiente a php.ini [use '/' en lugar de '\' en la ruta] curl.cainfo = "ruta / cacert.pem"

Reinicié mi XAMPP. Funcionó bien para mí. Gracias



1

Primero tienes que descargar el certificado desde este enlace

https://curl.haxx.se/ca/cacert.pem

y colóquelo en una ubicación donde desee que el nombre del archivo descargable sea: cacert.pem Entonces, en mi caso, lo pondré en C: \ wamp64 \ bin \ php \ cacert.pem

Luego debe especificar la ubicación del archivo php.ini

Por ejemplo, estoy usando php 7, el archivo php.ini se encuentra en: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Así que acceda a ese archivo y elimine esta línea; openssl.cafile

también actualícelo para que se vea así openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Finalmente reinicia tu servidor apache y eso es todo


1

IMPORTANTE : después de 4 horas, trabajando con laravel 5.7 y php 7. + y ejecute / use php artison serve en localhost tratando de conectarse a mailgun.

IMPORTANTE para resolver el problema no funciona con ip http://127.0.0.1:8000 use localhost o establezca el nombre de dominio por archivo de host

Okay ,


0

La solución es editar el archivo php.ini ubicado en su versión de php (para mí es php7.0.10), no el php.ini de apache. Encontrará un archivo comentado como este; curl.cainfo Simplemente cambie esta línea como este curl.cainfo = "C: \ permCertificate \ cacert.pem"

No olvide crear el directorio "permCertificate" y copiar el archivo "cacert.pem" dentro de él.


Funciona para mí en Ampps, gracias
Alejandro Aranda

-1

Solo para que sepas lo que funcionó para mí, el archivo en https://curl.haxx.se/ca/cacert .... no funcionó, sin embargo, el que está en la carpeta zip en la publicación en ( http: // flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue ) funcionó para mí sin ningún problema.

Como han dicho otros, copie el archivo del certificado en una ubicación en su disco duro, actualice la línea

;curl.cainfo 

en su archivo php.ini para leer

curl.cainfo= "path_to_cert\cacert.pem"

Reinicie su servidor Apache.


El sitio web vinculado es spam.
Rick Kukiela
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.