LocalhostでcURLを最も長く使用していましたが、オプションCURLOPT_SSL_VERIFYPEER
= FALSE
を明示的に設定しない限り、cURLが機能しなくなったことに突然気付きました。
私はこれがどのように/いつ変更されたかわかりませんが、NGINXとPHPを使用しており、これが特定のリクエストされたホストに対する特定の問題ではないことを確認できます。 https://site1.com
およびhttps://different-site.com
。
誰もが考えている?
デイブ・チェンの提案のおかげで、私は自分の証明書を紛失したに違いないと気付きました。この問題は、cURL作成者(Mozillaから抽出)が提供するこの証明書によって解決されます。 https://curl.haxx.se/ca/cacert.pem
したがって、このcacert.pemファイルをプロジェクトにダウンロードした後、PHPでこれを実行できます。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");
または、これをphp.iniに以下を追加してグローバルに設定できます
curl.cainfo=/path/to/cacert.pem
WampServerを使用している場合、これに注意してください:
CURLOPT_CAINFOに絶対パスを入力する必要があります。次に例を示します。
curl_setopt ($ch, CURLOPT_CAINFO, 'C:\wamp\www\your-project\cacert.pem')
相対パスを使用しないでください:curl_setopt($ ch、CURLOPT_CAINFO、 'cacert.pem')機能しないため。