PHP cURL Fehlercode 60

84

Beim Versuch, eine PHP-Umgebung unter Windows (mit Wamp) für die Verwendung des Amazon PHP SDK einzurichten, wird beim Versuch, einen Beispieltest auszuführen, die folgende Fehlermeldung angezeigt:

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

Ich habe meiner php.ini bereits die folgende Zeile hinzugefügt

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

Dies ist der Speicherort eines Zertifikats, das ich mit diesem VBS-Skript VBS-Script erstellt habe

Ich habe auch meinen WAMP-Dienst neu gestartet.

PHP Index Curl Referenz

Ciaran
quelle
6
Falls Sie sich nicht für den Zertifizierungsprozess interessieren, können Sie ihn vollständig deaktivieren curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr
Dies löste das Problem für mich - stackoverflow.com/a/32095378/178163 Grundsätzlich kann es 2 php.ini-Dateien geben
George Kagan
2
Für diejenigen, die wie ich zum ersten Mal auf dieses Problem stoßen, ist der Grund dafür meines Wissens (korrigieren Sie mich, wenn ich falsch liege), dass im Gegensatz zur Situation einer HTTPS-Verbindung über einen Browser eine CURL-Anfrage vorliegt erhält das Zertifikat nicht vom Server. Daher müssen wir das Zertifikat der Site manuell herunterladen und zur PHP-INI hinzufügen. Diese Überprüfung des Zertifikats am Ende des Clients ist Teil des HTTPS-Verbindungsprozesses und kann anscheinend umgangen werden. Hier curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);kommt das ins Spiel.
Sandeepan Nath
arbeitete als Zauber !!!! Vielen Dank!
Rodrigo Serzedello

Antworten:

225

Verwenden Sie dieses Zertifikat-Stammzertifikat-Bundle:

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

Kopieren Sie dieses Zertifikatspaket auf Ihre Festplatte. Und benutze dies aufphp.ini

curl.cainfo = "path_to_cert\cacert.pem"
Hüseyin BABAL
quelle
10
Und falls dies das Problem nicht löst? Ich setze curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));und in der php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . Die Datei ist da, aber ich erhalte immer noch den Fehler 60. Fehlt mir etwas?
Überlauf
3
@Overflowh gibt es zwei Arten von php.ini: Eine für PHP-CLI zweite für PHP-Web (Apache, Nginx, ...). Sie müssen curl.cainfo = "path_to_cert\cacert.pem"für Web eins einstellen . Auf der anderen Seite, wenn Sie sehen können curl.cainfo, dass in Ihrer PHP-Info-Ansicht wahr ist, kann es zu diesem Zeitpunkt zu einem Berechtigungsproblem kommen.
Hüseyin BABAL
Naja, eigentlich kann ich curl.cainfoin meinen PHP-Infos nichts sehen . Bedeutet dies, dass ich den Wert in die falsche Datei eingefügt habe?
Überlauf
1
Ja, bitte überprüfen Sie den Speicherort Ihrer php.ini-Datei. Sie müssen das in Web-Version setzen
Hüseyin BABAL
Ich habe in apache php.ini hinzugefügt, aber das hat nicht funktioniert
Kasim Badami
29

Ich habe dies behoben, indem ich die php.iniDatei unter geändert habeC:\wamp\bin\apache\apache2.4.9\bin\

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

Zuerst habe ich versucht, durch Ändern der php.iniDatei bei C:\wamp\bin\php\php5.5.12\und es hat nicht funktioniert.

Ich hoffe, dies hilft jemandem, der nach dem Recht php.iniauf Änderung sucht

aimme
quelle
1
Vielen Dank. Alles, was es brauchte, war das Herunterladen der Datei von curl.haxx.se/ca/cacert.pem und das Festlegen des Pfads in der Datei apache php.ini, wie Sie sagten. Bitte beachten Sie, dass Sie den Cacert überall platzieren können. Stellen Sie einfach sicher, dass Sie den Pfad korrekt eingegeben haben. Stellen Sie außerdem sicher, dass Sie das Semikolon entfernen!
Dan Zuzevich
1
Vergessen Sie nicht, Apache danach neu zu laden.
hcker2000
17
php --ini

Hier erfahren Sie genau, welche php.ini-Datei geladen wird, sodass Sie wissen, welche Sie ändern müssen. Ich habe viel Zeit damit verschwendet, die falsche php.ini-Datei zu ändern, weil ich WAMP und XAMPP installiert hatte.

Vergessen Sie auch nicht, den WAMP-Server (oder was auch immer Sie verwenden) nach dem Ändern von php.ini neu zu starten.

Anazul
quelle
1
Lebensretter! 3 verdammte Tage Fehlerbehebung und dies stellt sich als das Problem heraus
suo
13

@Overflowh Ich habe die obige Antwort auch ohne Glück versucht. Ich habe die PHP-Version von 5.3.24 auf 5.5.8 geändert, da diese Einstellung nur in PHP 5.3.7 und höher funktioniert. Ich fand dann diese http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue Ich habe die cacert.pem von dort heruntergeladen und die ersetzt, die ich von curl.hxxx.se heruntergeladen / erstellt hatte oben verlinkt und alles begann zu funktionieren. Ich habe versucht, Paypal Sandbox IPN zu überprüfen. Ich bin froh zu sagen, dass nach dem .pem-Tausch alles in Ordnung ist, wenn die Einstellung curl.cainfo in php.ini verwendet wird, die noch nicht in 5.3.24 enthalten war.

pgkerr76
quelle
2
Ich hatte das gleiche Problem und wurde behoben, indem ich nur das oben erwähnte PEM-Dateiformat heruntergeladen habe. Danke
saqibahmad
4
Haha, ich kann das nicht glauben! Ich besitze FLWebsites.biz und bin auf diesen Beitrag gestoßen, ohne zu wissen, dass ich erwähnt wurde ... Ich habe diesen Blog geschrieben!
HTMLGuy
Ich habe versucht, das Problem herauszufinden, und nach 3-4 Stunden bin ich endlich auf diese Antwort gestoßen. Ich sagte, na ja, warum nicht noch einmal eine PEM-Datei versuchen? Und Überraschung: Es hat endlich funktioniert. Danke, dass du diesen Blog gefunden
hast
Dies löste mein cacert.pem-Problem unter Windows 10, IIS. Vielen Dank.
Jacouh
3
Entschuldigung, ich habe meine Seite heruntergefahren. Gehen Sie direkt zur Quelle: curl.haxx.se/docs/caextract.html
HTMLGuy
8

@ Hüseyin BABAL

Ich erhalte eine Fehlermeldung mit dem obigen Zertifikat, aber ich versuche dieses Zertifikat und seine Funktionsweise.

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

Gaurang Ghinaiya
quelle
BEEINDRUCKEND. Das ist verrückt. Ich suchte nach einer Möglichkeit, die Datei cacert.pem global festzulegen, und stieß darauf. ICH BIN VielseitigkeitWerks haha. Du hast meinen Kern benutzt.
HTMLGuy
5

Zuerst müssen wir dieses Zertifikat-Stammzertifikat-Bundle herunterladen:

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

Verschieben Sie diese Datei an einen Ort wie den PHP-Ordner im Wamp / Xampp-Ordner.

Dann bearbeiten Sie Ihre "php.ini":

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

und

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

WICHTIG:

Stellen Sie sicher, dass Sie die Datei "php.ini" direkt in Ihrem Fenster-Explorer öffnen. (in meinem Fall: "C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini").

Verwenden Sie nicht die Verknüpfung zu "php.ini" im Menü des Wamp / Xampp-Symbols in der Taskleiste. Diese Verknüpfung funktionierte in einigen Fällen nicht.

Nach dem Speichern von "php.ini" müssen Sie im Wamp-Symbol nicht "Alle Dienste neu starten" oder CMD schließen / erneut öffnen.

Versuchen Sie es mit "var_dump (openssl_get_cert_locations ());" und sehen Sie sich die Zeile an: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Getan.

Quang Nguyen Tri
quelle
Ihr Hinweis zum Öffnen der Datei php.ini über den Explorer hat tatsächlich funktioniert! Und ich habe endlich herausgefunden, dass die php.ini von wamp icon einen anderen Pfad hat. Danke dir!!!
Doctiger
3

Problem behoben, laden Sie https://curl.haxx.se/ca/cacert.pem herunter, setzen Sie es "irgendwo" und fügen Sie diese Zeile ein php.ini:

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

PS: Ich habe diesen Fehler erhalten, als ich versucht habe, das Modul mit xampp auf Drupal zu installieren.

kleiner Fuchs
quelle
3

Die einfachste Lösung für das Problem besteht darin, den folgenden Befehl in das Feld einzufügen.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Wenn Sie dies verwenden, müssen Sie kein Zertifikat oder etwas hinzufügen.

Arjun Londhey
quelle
2

Fügen Sie das Folgende zu php.ini hinzu [verwenden Sie '/' anstelle von '\' im Pfad] curl.cainfo = "path / cacert.pem"

XAMPP neu gestartet. Es hat gut funktioniert für mich. Vielen Dank

TTS Raja
quelle
1

Zuerst müssen Sie das Zertifikat von diesem Link herunterladen

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

und platzieren Sie es an einem Ort, an dem Sie möchten. Der Name der herunterladbaren Datei lautet: cacert.pem In meinem Fall werde ich es also unter C: \ wamp64 \ bin \ php \ cacert.pem ablegen

Dann müssen Sie den Speicherort der Datei php.ini angeben

Zum Beispiel verwende ich PHP 7. Die Datei php.ini befindet sich unter: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Greifen Sie also auf diese Datei zu und deaktivieren Sie diese Zeile: openssl.cafile

Aktualisieren Sie es auch so, dass es wie folgt aussieht openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Starten Sie schließlich Ihren Apache-Server neu und das ist alles

MUSTAPHA GHLISSI
quelle
1

WICHTIG : Nach 4 Stunden arbeiten Sie mit Laravel 5.7 und PHP 7. + und führen / verwenden Sie PHP Artison Serve auf Localhost, um eine Verbindung mit Mailgun herzustellen.

WICHTIG, um das Problem zu beheben. Funktionieren Sie nicht mit der IP- Adresse http://127.0.0.1:8000. Verwenden Sie localhost oder legen Sie den Domänennamen anhand der Hostdatei fest

OK ,

lior ben yosef
quelle
0

Die Lösung besteht darin, die Datei php.ini zu bearbeiten, die sich in Ihrer PHP-Version befindet (für mich ist es PHP7.0.10), nicht die PHP.ini von Apache. Sie finden eine kommentierte Datei wie diese; curl.cainfo Ändern Sie einfach diese Zeile wie folgt curl.cainfo = "C: \ permCertificate \ cacert.pem"

Vergessen Sie nicht, das Verzeichnis "permCertificate" zu erstellen und die Datei "cacert.pem" darin zu kopieren.

Sami FAREH
quelle
Arbeitet für mich in Ampps, Danke
Alejandro Aranda
-1

Nur damit Sie wissen, was für mich funktioniert hat, hat die Datei unter https://curl.haxx.se/ca/cacert .... jedoch nicht funktioniert, die im Zip-Ordner im Beitrag unter ( http: // flwebsites) .biz / posts / how-fix-curl-error-60-ssl-problem ) funktionierte für mich ohne Probleme.

Kopieren Sie, wie bereits erwähnt, die Zertifikatdatei an einen Speicherort auf Ihrer Festplatte und aktualisieren Sie die Zeile

;curl.cainfo 

in Ihrer php.ini Datei zu lesen

curl.cainfo= "path_to_cert\cacert.pem"

Starten Sie Ihren Apache-Server neu.

Compiler
quelle
Die verlinkte Website ist Spam.
SublymeRick