Der Beitrag, geschriebem am 15. Oktober 2020, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein
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

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.




Schreibe einen Kommentar