Erreur fréquemment obtenue lorsqu'on utilise CURL pour interroger un service par son API depuis son serveur local de développement.
Solution 1 : modifier le paramétrage du fichier php.ini
Dans le fichier php.ini, il suffit d'indiquer ce qui suit
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. curl.cainfo = "C:\Users\admin\cer\cacert.pem"
et de placer dans le dossier un fichier cacert.pem à l'emplacement indiqué. Le chemin doit être absolu. Voici un fichier cacert compressé au format zip.
Solution 2 : indiquer à curl l'emplacement du fichier cacert.pem
Lors de l'utilisation, au moment du paramétrage de CURL, indiquer la ligne :
curl_setopt($ch, CURLOPT_CAINFO, getcwd().'/cert/cacert.pem');
Attention, le chemin doit être absolu et le fichier doit être présent.
La mauvaise solution
Eviter de désactiver le contrôle des certificats. L'option CURLOPT_SSL_VERIFYPEER
permet d'arrêter la vérification mais provoque une faille de sécurité lorsque le code est installé sur un serveur de production.