Codice di errore PHP cURL 60


85

Durante il tentativo di configurare un ambiente php su Windows (utilizzando wamp) per utilizzare Amazon PHP SDK, quando provo a eseguire un test di esempio ottengo il seguente errore:

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

Ho già aggiunto la seguente riga al mio php.ini

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

che è la posizione di un certificato che ho creato utilizzando questo script VBS VBS-Script

Ho riavviato anche il mio servizio WAMP.

Riferimento per l'arricciatura dell'indice PHP


6
Nel caso in cui non ti interessi del processo di certificazione, puoi disabilitarlo del tutto curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr

Questo ha risolto il problema per me - stackoverflow.com/a/32095378/178163 Fondamentalmente potrebbero esserci 2 file php.ini
George Kagan

3
Per coloro che si imbattono in questo problema per la prima volta, come ho fatto io, il motivo alla base, per quanto ho capito (correggimi se sbaglio), è che, a differenza della situazione di una connessione HTTPS tramite un browser, una richiesta CURL non ottiene il certificato dal server. Quindi, dobbiamo scaricare manualmente il certificato del sito e aggiungerlo a ini PHP. Questa verifica del certificato alla fine del client fa parte del processo di connessione HTTPS e, a quanto pare, può essere aggirata. È qui che curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);entra in gioco l'immagine.
Sandeepan Nath

ha funzionato come un fascino !!!! Grazie!
Rodrigo Serzedello

Risposte:


226

Usa questo pacchetto di certificati radice del certificato:

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

Copia questo pacchetto di certificati sul tuo disco. E usalo suphp.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
E nel caso in cui questo non risolva il problema? Ho impostato curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));e nel php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . Il file è lì, ma ricevo ancora l'errore 60. C'è qualcosa che mi manca?
Overflowh

3
@Overflowh ci sono due tipi di php.ini: uno per php-cli secondo per php-web (apache, nginx, ...). Devi impostare curl.cainfo = "path_to_cert\cacert.pem"per il web uno. D'altra parte, se puoi vedere che curl.cainfoè vero nella tua visualizzazione delle informazioni php, quella volta potrebbe esserci un problema di autorizzazione.
Hüseyin BABAL

Beh, in realtà non riesco a vedere curl.cainfonelle mie informazioni php. Significa che ho inserito il valore nel file sbagliato?
Overflowh

1
Sì, ricontrolla la posizione del tuo file php.ini. Devi metterlo nella versione web
Hüseyin BABAL

Ho aggiunto in apache php.ini, ma non ha funzionato
kasim badami

31

Ho risolto questo problema modificando il php.inifile inC:\wamp\bin\apache\apache2.4.9\bin\

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

prima stavo provando modificando il php.inifile in C:\wamp\bin\php\php5.5.12\e non ha funzionato.

spero che questo aiuti qualcuno che sta cercando il diritto php.inidi modificare


1
Grazie. È bastato scaricare il file da curl.haxx.se/ca/cacert.pem e impostarne il percorso nel file apache php.ini come hai detto. Fai attenzione alle persone, puoi mettere il cacert ovunque tu voglia, assicurati solo di inserire correttamente il percorso. Inoltre, assicurati di rimuovere il punto e virgola!
Dan Zuzevich

1
Non dimenticare di ricaricare Apache dopo questo.
hcker2000

17
php --ini

Questo ti dirà esattamente quale file php.ini viene caricato, così saprai quale modificare. Ho perso molto tempo a cambiare il file php.ini sbagliato perché avevo installato WAMP e XAMPP.

Inoltre, non dimenticare di riavviare il server WAMP (o qualunque cosa tu usi) dopo aver cambiato php.ini.


1
salvavita! 3 maledetti giorni di risoluzione dei problemi e questo risulta essere il problema
suo

13

@ Overflowh Ho provato la risposta di cui sopra anche senza fortuna. Ho cambiato la versione di php da 5.3.24 a 5.5.8 poiché questa impostazione funzionerà solo in php 5.3.7 e versioni successive. Ho quindi trovato questo http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue Ho scaricato il cacert.pem da lì e ho sostituito quello che avevo scaricato / fatto da curl.hxxx.se collegato sopra e tutto ha iniziato a funzionare. Stavo cercando di verificare l'IPN della sandbox paypal. Felice di dire che dopo lo scambio .pem tutto è ok usando l'impostazione curl.cainfo in php.ini che ancora non era in 5.3.24.


2
Stavo affrontando lo stesso problema e risolto semplicemente scaricando il modulo di file .pem sopra menzionato. Grazie
saqibahmad

4
Haha non posso crederci! Possiedo FLWebsites.biz e mi sono imbattuto in questo post completamente ignaro di essere stato menzionato ... Ho scritto quel blog!
HTMLGuy

Ho cercato di capire il problema e dopo 3-4 ore sono finalmente incappato in questa risposta. Ho detto vabbè, perché non provare di nuovo un altro file pem. E sorpresa: finalmente ha funzionato. Grazie per aver trovato quel blog :)
Sauleil

Questo ha risolto il mio problema con cacert.pem in Windows 10, IIS. Grazie.
Jacouh

3
Scusa, ho disattivato il mio sito. Vai direttamente alla fonte: curl.haxx.se/docs/caextract.html
HTMLGuy


5

Innanzitutto, è necessario scaricare questo bundle del certificato radice del certificato:

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

Sposta questo file da qualche parte, ad esempio nella cartella PHP nella cartella Wamp / Xampp.

Quindi modifica il tuo "php.ini":

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

e

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

IMPORTANTE:

Assicurati di aprire il file "php.ini" direttamente da Windows Explorer. (nel mio caso: "C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini").

Non utilizzare il collegamento a "php.ini" nel menu dell'icona Wamp / Xampp nella barra delle applicazioni. Questa scorciatoia non ha funzionato in alcuni casi che ho affrontato.

Dopo aver salvato "php.ini" non è necessario "Riavvia tutti i servizi" nell'icona Wamp o chiudere / riaprire CMD.

Prova con "var_dump (openssl_get_cert_locations ());" e guarda la riga: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Fatto.


La tua nota sull'apertura del file php.ini tramite Explorer ha effettivamente funzionato! E finalmente ho capito che il php.ini dell'icona wamp ha un percorso diverso. Grazie!!!
Doctiger

4

La soluzione più semplice al problema è aggiungere il comando seguente nel campo.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Usando questo non sarà necessario aggiungere alcun certificato o altro.


3

Problema risolto, scarica https://curl.haxx.se/ca/cacert.pem e mettilo "da qualche parte" e aggiungi questa riga in php.ini:

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

PS: ho ricevuto questo errore provando a installare il modulo su drupal con xampp.


2

Aggiungi quanto segue a php.ini [usa "/" invece di "\" nel percorso] curl.cainfo = "percorso / cacert.pem"

Riavviato il mio XAMPP. Ha funzionato bene per me. Grazie



1

Per prima cosa devi scaricare il certificato da questo link

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

e metterlo in una posizione in cui si desidera che il nome del file scaricabile sia: cacert.pem Quindi nel mio caso lo metterò sotto C: \ wamp64 \ bin \ php \ cacert.pem

Quindi devi specificare la posizione del file php.ini

Ad esempio, sto usando php 7, il file php.ini si trova in: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Quindi accedi a quel file e decomprimi questa riga; openssl.cafile

aggiornalo anche in questo modo openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Infine riavvia il tuo server Apache e questo è tutto


1

IMPORTANTE : dopo 4 ore, lavorando con laravel 5.7 e php 7. + ed eseguire / utilizzare php artison serve su localhost cercando di connettersi a mailgun.

IMPORTANTE per risolvere il problema non funziona con ip http://127.0.0.1:8000 usa localhost o imposta il nome di dominio dal file host

ok ,


0

La soluzione è modificare il file php.ini che si trova nella tua versione php (per me è php7.0.10) non il php.ini di apache. Troverai un file commentato come questo; curl.cainfo Basta cambiare questa riga in questo modo curl.cainfo = "C: \ permCertificate \ cacert.pem"

Non dimenticare di creare la directory "permCertificate" e di copiare il file "cacert.pem" al suo interno.


Lavora per me in Ampps, grazie
Alejandro Aranda

-1

Solo così sai cosa ha funzionato per me, Il file su https://curl.haxx.se/ca/cacert .... non ha funzionato tuttavia, quello nella cartella zip nel post su ( http: // flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue ) ha funzionato per me senza problemi.

Come altri hanno già detto, copia il file del certificato in una posizione sul tuo disco rigido, aggiorna la riga

;curl.cainfo 

nel file php.ini da leggere

curl.cainfo= "path_to_cert\cacert.pem"

Riavvia il tuo server Apache.


Il sito web collegato è spam.
Rick Kukiela
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.