WP Mail SMTPのGuzzleHttp\Exception\RequestExceptionの原因と対策

WP Mail SMTP 1.0.2 + WordPress 4.9.1 で以下のようなエラーに遭遇した。

Fatal error: Uncaught exception ‘GuzzleHttp\Exception\RequestException’ with message ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)’ in C:\xampp\htdocs\wordpress\wp-content\plugins\wp-mail-smtp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187 Stack trace: #0 C:\xampp\htdocs\wordpress\wp-content\plugins\wp-mail-smtp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\wordpress\wp-content\plugins\wp-mail-smtp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp\htdocs\wordpress\wp-content\plugins\wp-mail-smtp\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(O in C:\xampp\htdocs\wordpress\wp-content\plugins\wp-mail-smtp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187

このエラーの原因は最新のサーバー証明書が入っていないことである。

対策手順を以下に示す。

(1) 最新の証明書(cacert.pem)をダウンロードする

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

(2) cacert.pemを「C:\xampp\php\extras\ssl」以下にコピーする

(3) php.iniに以下の記述を追加する

[cURL]
curl.cainfo=”C:\xampp\php\extras\ssl\cacert.pem”
openssl.cafile=”C:\xampp\php\extras\ssl\cacert.pem”

(4) Apacheを再起動する

参考

cURL error 60: SSL certificate prblm: unable to get local issuer certificate
I want to collect a list of videos uploaded on a specific channel using the YouTube data API. However, before implementing online I am trying to get my code run...
http://nanoappli.com/blog/archives/7992

コメント