Ich verwende PHP Version 5.6.3 als Teil von XAMPP unter Windows 7.
Wenn ich versuche, die Mandrill-API zu verwenden, wird folgende Fehlermeldung angezeigt:
Nicht erfasste Ausnahme 'Mandrill_HttpError' mit der Meldung 'API-Aufruf von Nachrichten / Sendevorlage fehlgeschlagen: SSL-Zertifikatsproblem: Lokales Ausstellerzertifikat kann nicht abgerufen werden'
Ich habe bereits alles ausprobiert, was ich in StackOverflow gelesen habe, einschließlich des Hinzufügens der folgenden Datei zur Datei php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
Und natürlich hat die Datei cacert.pem von http://curl.haxx.se/docs/caextract.html an diesen Speicherort heruntergeladen
Nach all dem wurde XAMPP und Apache Server neu gestartet, es wurde jedoch immer noch der gleiche Fehler angezeigt.
Ich weiß wirklich nicht, was ich sonst noch versuchen soll.
Kann mir jemand raten, was ich sonst noch versuchen kann?
Antworten:
Endlich hat das geklappt!
Laden Sie das Zertifikatspaket herunter .
Stell es irgendwo hin. In meinem Fall war das
c:\wamp\
Verzeichnis (wenn Sie Wamp 64 Bit verwenden, ist esc:\wamp64\
).Aktivieren Sie
mod_ssl
in Apache undphp_openssl.dll
inphp.ini
(kommentieren Sie sie aus, indem Sie sie;
am Anfang entfernen ). Aber seien Sie vorsichtig, mein Problem war, dass ich zweiphp.ini
Dateien hatte und dies in beiden tun muss. Eine ist die, die Sie über Ihr WAMP-Taskleistensymbol erhalten, und eine andere ist in meinem Fall inC:\wamp\bin\php\php5.5.12\
Fügen Sie diese Zeilen in beiden
php.ini
Dateien zu Ihrem Zertifikat hinzu :Starten Sie die Wamp-Dienste neu.
quelle
;
am Anfang ein und es dauerte Stunden, bis mir klar wurde, dass es sich um einen Kommentar handelt. so für noobs wie ich, braucht man die entfernen;
undBut be careful, my problem was that I had two php.ini files and I need to do this in both of them. One is the one you get from your WAMP taskbar icon, and another one is, in my case, in C:\wamp\bin\php\php5.5.12\
Ich hatte das gleiche Problem in der Datei Mandrill.php nach Zeile 65, in der $ this-> ch = curl_init () steht.
Fügen Sie die folgenden zwei Zeilen hinzu:
Dies löste mein Problem und schickte auch E-Mails mit localhost, aber ich empfehle, es NICHT in der Live-Version live zu verwenden. Auf Ihrem Live-Server sollte der Code ohne diesen Code funktionieren.
quelle
CURLOPT_SSL_VERIFYPEER
zufalse
arbeiten.Danke @Mladen Janjetovic,
Ihr Vorschlag hat bei mir auf einem Mac mit installierten Ampps funktioniert.
Kopiert: http://curl.haxx.se/ca/cacert.pem
Zu:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
Und
php.ini
mit diesem Pfad aktualisiert und Apache neu gestartet:Und die gleiche Einstellung in der Windows AMPPS-Installation angewendet und es hat auch perfekt funktioniert.
: Gleiches gilt für Wamp.
Wenn Sie ein neues SSL-Zertifikat mit SAN für localhost generieren möchten, haben die Schritte in diesem Beitrag für mich funktioniert
Centos 7 / Vagrant / Chrome Browser
.quelle
Wenn Sie die Seite http://curl.haxx.se/docs/caextract.html anzeigen , werden Sie in großen Buchstaben einen Abschnitt mit dem Namen:
Lesen Sie es und laden Sie die Version der Zertifikate herunter, die die 'RSA-1024'-Zertifikate enthält. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Diese werden mit Mandrill arbeiten.
Das Deaktivieren von SSL ist eine schlechte Idee.
quelle
Die obigen Schritte waren zwar hilfreich, funktionierten jedoch unter Windows 8 nicht. Ich kenne die Beziehung nicht, aber die folgenden Schritte haben funktioniert. Grundsätzlich eine Änderung in der Datei cacert.pem. Hoffe das hilft jemandem.
quelle
Ich habe eine neue Lösung gefunden, für die keine Zertifizierung erforderlich ist, um Curl aufzurufen. Fügen Sie nur zwei Zeilen hinzu.
quelle
Wenn Sie keinen Zugriff auf php.ini haben, funktioniert das Hinzufügen dieses Codes (nach Ihrer
$ch = curl_init();
Zeile) für mich:Dann müssen Sie nur noch ca-bundle.crt herunterladen und an dem von Ihnen angegebenen Ort speichern
$certificate_location
.quelle
Ich habe eine sehr einfache Lösung für dieses Problem. Sie können dies ohne Zertifikatdatei tun.
Mach weiter Laravel Root Folder -> Vender -> guzzlehttp -> guzzle -> src
öffnen Client.php
find $ defaults Array. das sieht so aus ..
Jetzt besteht die Hauptaufgabe darin, den Wert des Überprüfungsschlüssels zu ändern .
Danach wird das SSL-Zertifikat nicht mehr auf CURL-Anforderungen überprüft ... Diese Lösung funktioniert für mich. Ich finde diese Lösung nach vielen Recherchen ...
quelle
Ausarbeitung der obigen Antworten für die Serverbereitstellung.
sollte den Trick für die Entwicklungsumgebung tun, ohne den Server bei der Bereitstellung zu gefährden.
quelle
Ich habe versucht, es funktioniert
öffnen
und ändern Sie dies
dazu
quelle
Ich hatte das gleiche Problem beim Erstellen meiner App in AppVeyor.
c:\php
echo extension=php_openssl.dll >> c:\php\php.ini
echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
quelle
Wenn keine der oben genannten Lösungen für Sie funktioniert, aktualisieren Sie Ihre XAMPP-Installation auf eine neuere Version.
Ich habe XAMPP mit PHP 5.5.11 ausgeführt, der gleiche exakte Code hat nicht funktioniert, ich habe ein Upgrade auf XAMPP mit PHP 5.6.28 durchgeführt und die oben genannten Lösungen haben funktioniert.
Außerdem hat nur das Aktualisieren von PHP nicht funktioniert. Dies scheint eine Kombination aus Apache- und PHP-Einstellungen in dieser Version von XAMPP zu sein.
Hoffe es hilft jemandem.
quelle
Ich habe den Fehler bekommen wie:
Ich benutze Windows-Maschine. Also habe ich die folgenden Schritte befolgt.
Hoffe es kann jemandem helfen
quelle
Ich hatte ein solches Problem in meinem lokalen System, aber nicht auf dem Live-Server. Ich habe auf dieser Seite bereits eine andere Lösung erwähnt, die jedoch in localhost nicht funktioniert hat. Suchen Sie daher eine neue Lösung, die auf dem localhost-WAMP-Server funktioniert .
Manchmal konnte das System Ihre cacert.pem nicht in Ihrem Laufwerk finden. Sie können dies also in Ihrem Code definieren, in dem Sie CURL verwenden möchten
Überprüfen Sie diesen Code von CURL .
Diese Lösung funktioniert jedoch möglicherweise nicht auf Live-Servern. wegen des absoluten Pfades von cacert.pem
quelle
Ich habe eine ordnungsgemäße Lösung für dieses Problem. Lassen Sie uns versuchen, die Hauptursache für dieses Problem zu verstehen. Dieses Problem tritt auf, wenn die SSL von Remoteservern nicht mithilfe von Stammzertifikaten im Zertifikatspeicher Ihres Systems überprüft werden kann oder die SSL von Remoteservern nicht zusammen mit Kettenzertifikaten installiert ist. Wenn Sie ein Linux-System mit Root-SSH-Zugriff haben, können Sie in diesem Fall versuchen, Ihren Zertifikatspeicher mit dem folgenden Befehl zu aktualisieren:
update-ca-certificates
Wenn dies immer noch nicht funktioniert, müssen Sie das Stamm- und Zwischenzertifikat des Remote-Servers in Ihrem Zertifikatspeicher hinzufügen. Sie können Root- und Zwischenzertifikate herunterladen und im Verzeichnis / usr / local / share / ca-certificates hinzufügen und dann den Befehl ausführen
update-ca-certificates
. Dies sollte den Trick tun. Ebenso können Sie für Windows suchen, wie Sie Stamm- und Zwischenzertifikate hinzufügen.Die andere Möglichkeit, dieses Problem zu lösen, besteht darin, das Remoteserver-Team zu bitten, das SSL-Zertifikat als Bündel aus Domänenstammzertifikat, Zwischenzertifikat und Stammzertifikat hinzuzufügen.
quelle
für guzzle können Sie dies versuchen:
getestet an Guzzle / Guzzle 3. *
quelle