Code d'erreur PHP cURL 60

85

En essayant de configurer un environnement php sur Windows (à l'aide de wamp) pour utiliser le SDK Amazon PHP, lorsque j'essaye d'exécuter un exemple de test, j'obtiens l'erreur suivante:

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

J'ai déjà ajouté la ligne suivante à mon php.ini

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

qui est l'emplacement d'un certificat que j'ai créé à l'aide de ce script VBS VBS-Script

J'ai également redémarré mon service WAMP.

Référence de curl d'index PHP

Ciaran
la source
6
Si vous ne vous souciez pas du processus de certification, vous pouvez le désactiver complètement curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr
Cela a résolu le problème pour moi - stackoverflow.com/a/32095378/178163 Fondamentalement, il peut y avoir 2 fichiers php.ini
George Kagan
2
Pour ceux qui se heurtent à ce problème pour la première fois, comme je l'ai fait, la raison derrière cela, pour autant que je sache (corrigez-moi si je me trompe), est que contrairement à la situation d'une connexion HTTPS via un navigateur, une requête CURL n'obtient pas le certificat du serveur. Nous devons donc télécharger manuellement le certificat du site et l'ajouter à l'ini PHP. Cette vérification du certificat du côté du client fait partie du processus de connexion HTTPS, et il semble qu'elle puisse être contournée. C'est là que la curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);photo entre en scène.
Sandeepan Nath
a fonctionné comme un charme !!!! Merci!
Rodrigo Serzedello

Réponses:

226

Utilisez ce bundle de certificat racine de certificat:

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

Copiez ce bundle de certificats sur votre disque. Et utilisez ceci surphp.ini

curl.cainfo = "path_to_cert\cacert.pem"
Hüseyin BABAL
la source
10
Et au cas où cela ne résoudrait pas le problème? Je mets curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));et dans le php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . Le fichier est là, mais j'obtiens toujours l'erreur 60. Il me manque quelque chose?
Débordement du
3
@Overflowh il existe deux types de php.ini: un pour php-cli second pour php-web (apache, nginx, ...). Vous devez définir curl.cainfo = "path_to_cert\cacert.pem"pour Web One. D'un autre côté, si vous voyez que curl.cainfoc'est vrai dans votre vue info php, cette fois, il peut y avoir un problème d'autorisation.
Hüseyin BABAL
Eh bien, en fait, je ne peux pas voir curl.cainfodans mes informations php. Cela signifie-t-il que j'ai mis la valeur dans le mauvais fichier?
Débordement du
1
Oui, veuillez vérifier l'emplacement de votre fichier php.ini. Vous devez mettre cela en version Web
Hüseyin BABAL
J'ai ajouté dans apache php.ini, mais cela n'a pas fonctionné
kasim badami
31

J'ai corrigé cela en modifiant le php.inifichier àC:\wamp\bin\apache\apache2.4.9\bin\

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

J'ai d'abord essayé en modifiant le php.inifichier C:\wamp\bin\php\php5.5.12\et cela n'a pas fonctionné.

espérons que cela aidera quelqu'un qui recherche le droit php.inide modifier

aimme
la source
1
Merci. Il suffisait de télécharger le fichier depuis curl.haxx.se/ca/cacert.pem et de définir le chemin d'accès dans le fichier apache php.ini comme vous l'avez dit. Soyez conscient des gens, vous pouvez placer le cacert où vous le souhaitez, assurez-vous simplement de mettre le chemin correctement. Assurez-vous également de supprimer le point-virgule!
Dan Zuzevich
1
N'oubliez pas de recharger Apache après cela.
hcker2000
17
php --ini

Cela vous indiquera exactement quel fichier php.ini est en cours de chargement, vous savez donc lequel modifier. J'ai perdu beaucoup de temps à changer le mauvais fichier php.ini parce que WAMP et XAMPP étaient installés.

N'oubliez pas non plus de redémarrer le serveur WAMP (ou tout ce que vous utilisez) après avoir changé php.ini.

Anazul
la source
1
sauveur de vie! 3 fichus jours de dépannage et cela s'avère être le problème
suo
13

@Overflowh J'ai essayé la réponse ci-dessus également sans succès. J'ai changé la version php de 5.3.24 à 5.5.8 car ce paramètre ne fonctionnera que dans php 5.3.7 et supérieur. J'ai ensuite trouvé ce http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue J'ai téléchargé le cacert.pem à partir de là et remplacé celui que j'avais téléchargé / créé à partir de curl.hxxx.se lié ci-dessus et tout a commencé à fonctionner. J'essayais d'obtenir l'IPN de bac à sable paypal pour vérifier. Heureux de dire qu'après l'échange .pem, tout va bien en utilisant le paramètre curl.cainfo dans php.ini qui n'était toujours pas en 5.3.24.

pgkerr76
la source
2
J'étais confronté au même problème et résolu en téléchargeant simplement le formulaire de fichier .pem mentionné ci-dessus. Merci
saqibahmad
4
Haha je ne peux pas croire ça! Je possède FLWebsites.biz et je suis tombé sur ce post sans savoir que j'étais mentionné ... J'ai écrit ce blog!
HTMLGuy
J'ai essayé de comprendre le problème, et après 3-4 heures, je suis finalement tombé sur cette réponse. J'ai dit bon, pourquoi ne pas essayer à nouveau un autre fichier pem. Et surprise: ça a finalement marché. Merci d'avoir trouvé ce blog :)
Sauleil
Cela a résolu mon problème cacert.pem sous Windows 10, IIS. Merci.
jacouh
3
Désolé, j'ai supprimé mon site. Allez directement à la source: curl.haxx.se/docs/caextract.html
HTMLGuy
8

@ Hüseyin BABAL

J'obtiens une erreur avec le certificat ci-dessus mais j'essaye ce certificat et son fonctionnement.

https://gist.github.com/VersatilityWerks/5719158/download

Gaurang Ghinaiya
la source
SENSATIONNEL. C'est fou. Je cherchais un moyen de définir le cacert.pem globalement et je suis tombé sur cela. JE SUIS VersatilityWerks haha. Vous avez utilisé mon essence.
HTMLGuy
5

Tout d'abord, nous devons télécharger ce bundle de certificat racine de certificat:

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

Déplacez ce fichier quelque part, par exemple dans le dossier PHP du dossier Wamp / Xampp.

Puis modifiez votre "php.ini":

curl.cainfo = "C: /chemin/to/your/cacert.pem"

et

openssl.cafile = "C: /chemin/to/your/cacert.pem"

IMPORTANT:

Assurez-vous que vous ouvrez le fichier "php.ini" directement par votre explorateur de fenêtres. (dans mon cas: «C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini»).

N'utilisez pas le raccourci vers "php.ini" dans le menu de l'icône Wamp / Xampp dans la barre d'état système. Ce raccourci n'a pas fonctionné dans certains cas auxquels j'ai été confronté.

Après avoir enregistré "php.ini", vous n'avez pas besoin de "Redémarrer tous les services" dans l'icône Wamp ou de fermer / rouvrir CMD.

Essayez avec "var_dump (openssl_get_cert_locations ());" et regardez la ligne: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Terminé.

Quang Nguyen Tri
la source
Votre note sur l'ouverture du fichier php.ini via l'explorateur a fonctionné! Et j'ai finalement compris que l'icône php.ini de wamp avait un chemin différent. Merci!!!
Doctiger
3

Problème résolu, téléchargez https://curl.haxx.se/ca/cacert.pem et mettez-le "quelque part", et ajoutez cette ligne dans php.ini:

curl.cainfo = "C:/somewhere/cacert.pem"

PS: j'ai eu cette erreur en essayant d'installer le module sur drupal avec xampp.

petit renard
la source
3

La solution la plus simple au problème consiste à ajouter la commande ci-dessous dans le champ.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

L'utilisation de cela n'aura pas besoin d'ajouter de certificat ou quoi que ce soit.

Arjun Londhey
la source
2

Ajoutez ce qui suit à php.ini [utilisez '/' au lieu de '\' dans le chemin] curl.cainfo = "path / cacert.pem"

Redémarré mon XAMPP. Cela a bien fonctionné pour moi. Merci

TTS Raja
la source
1

Vous devez d'abord télécharger le certificat à partir de ce lien

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

et placez-le dans un emplacement où vous voulez que le nom du fichier téléchargeable soit: cacert.pem Donc dans mon cas, je vais le mettre sous C: \ wamp64 \ bin \ php \ cacert.pem

Ensuite, vous devez spécifier l'emplacement du fichier php.ini

Par exemple, j'utilise php 7 le fichier php.ini se trouve à: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Donc, accédez à ce fichier et désactivez cette ligne; openssl.cafile

également le mettre à jour pour qu'il ressemble à ceci openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Enfin redémarrez votre serveur apache et c'est tout

MUSTAPHA GHLISSI
la source
1

IMPORTANT : après 4 heures, travailler avec laravel 5.7 et php 7. + et exécuter / utiliser php artison serve sur localhost en essayant de se connecter à mailgun.

IMPORTANT pour résoudre le problème ne fonctionne pas avec ip http://127.0.0.1:8000 utilisez localhost ou définissez le nom de domaine par fichier hôte

D'accord ,

lior ben yosef
la source
0

La solution est d'éditer le fichier php.ini situé dans votre version php (pour moi c'est php7.0.10) pas le php.ini d'apache. Vous trouverez un fichier commenté comme celui-ci; curl.cainfo Changez simplement cette ligne comme ceci curl.cainfo = "C: \ permCertificate \ cacert.pem"

N'oubliez pas de créer le répertoire "permCertificate" et de copier le fichier "cacert.pem" à l'intérieur.

Sami FAREH
la source
Fonctionne pour moi dans Ampps, merci
Alejandro Aranda
-1

Juste pour que vous sachiez ce qui a fonctionné pour moi, le fichier à https://curl.haxx.se/ca/cacert .... n'a pas fonctionné cependant, celui du dossier zip dans le post à ( http: // flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue ) a fonctionné pour moi sans aucun problème.

Comme d'autres l'ont dit, copiez le fichier de certificat à un emplacement sur votre disque dur, mettez à jour la ligne

;curl.cainfo 

dans votre fichier php.ini pour lire

curl.cainfo= "path_to_cert\cacert.pem"

Redémarrez votre serveur Apache.

Compilateur
la source
Le site Web lié est du spam.
Rick Kukiela le