| |

Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem

Bild von Lolame auf Pixabay
rotschnabelhokko 5179004 1920

Für die Entwicklung und erste Tests nutze ich seit jeher den in Windows integrierten Webserver (IIS), den man im Windows-Setup nachinstallieren kann. Doch mit der Installation von Multilingualpress um eine Kundenwebsite weiter zu entwickeln, trat folgender Fehler auf.

Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in …\wp-content\plugins\multilingualpress\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:201 Stack trace: #0 …\wp-content\plugins\multilingualpress\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection() #1 …\mlstest\wp-content\plugins\multilingualpress\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError() #2 …\mlstest\wp-content\plugins\multilingualpress\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish() #3 …\wp-content\plugins\multilingualpress\vendor\guzzlehttp\guzzle\src\Handler\Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke() #4 …in …\wp-content\plugins\multilingualpress\vendor\mjelamanov\psr18-guzzle\src\Client.php on line 50

In der Wirkbetriebsumgebung (Linux, Apache) lief hingegen alles bestens, da die Curl-Bibliotheken über die Paketmanager gebündelt werden und die aktuellen Curl-Bibliotheken mit dem neuesten CA-Root-Zertifikatspaket von Mozilla.org geliefert werden.

Das bedeutet, dass man einfach den CURLOPT_SSL_VERIFYPEER einschaltet und keine Fehler erhalten wird.Bei einer PHP-Installation die diese Datei nicht enthält, wie die Windows-PHP-Distribution, muss das CA-Root-Zertifikatspaket manuell herunterladen und PHP mitgeteilt werden, wo es zu finden ist. Auf der curl-Website steht das neueste CA-Root-Zertifikatspaket bereit.

https://curl.se/docs/caextract.html

screenshot 2021 10 15 091233

Die Datei herunterladen, und im PHP-Verzeichnis speichern (das geht vermutlich erst hinterher, da es dafür Admin-Rechte braucht).

Anschließend die php.ini-Datei bearbeiten und curl mitteilen, wo die .pem-Datei gespeichert ist. In meiner Testumgebung habe ich mehrere PHP-Versionen unter C:\Program Files\PHP also habe ich die Datei in diesem Ordner abgelegt und diese Zeile zu jeder php.ini-Datei hinzugefügt:

curl.cainfo=c:\Program Files\php\cacert.pem

Eventuell muss der Webserver neu gestartet werden. Bei mir war der Fehler umgehend nach dem Speichern der php.ini Datei zur entsprechenden PHP-Version verschwunden.

Kommentarformular bitte nicht für Supportanfragen verwenden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.