現象
XAMPP 上で Guzzle Client を利用しようとしたら以下のようなエラーが発生しました。
GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: self signed certificate in certificate chain (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://example.jp/
前提
この XAMPP 環境は以前XAMPPのPHPのバージョンをアップグレードする ( 7.1.7 → 7.4.3 )で PHP のバージョンを上げていました。
調査
XAMPP の PHP について php.ini
を確認。
extension=curl
まずここはOK。
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =
あ、SSL証明書の指定がないですね。
ちなみに元々 XAMPP に入っていたバージョンの php.ini
では
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="PATH:\TO\xampp\apache\bin\curl-ca-bundle.crt"
SSL証明書の指定がありました。
パス先にSSL証明書が存在していることを確認の上、パスを現行の php.ini
に貼り付けます。
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =
curl.cainfo="PATH:\TO\xampp\apache\bin\curl-ca-bundle.crt"
これで XAMPP の Apache を再起動したところ、エラーは出なくなりました。