cURL 錯誤 60:SSL 憑證問題:無法取得本地發行者憑證
在 Windows 本機開發時可能會發生此問題。我使用的是 Windows 10 (x64)
為了修復錯誤,我從 https://curl.haxx.se/docs/caextract.html 下載了 cacert.pem
在 php.ini 中設定以下值
curl.cainfo = "C: \ php-8.0.7 \ extras \ ssl \ cacert.pem"
這些函式的行為受 php.ini 中的設定影響。
名稱 | 預設值 | 可修改性 | 更新日誌 |
---|---|---|---|
curl.cainfo | NULL | INI_SYSTEM |
以下是設定指令的簡短說明。
curl.cainfo
字串CURLOPT_CAINFO
選項的預設值。這需要是一個絕對路徑。
cURL 錯誤 60:SSL 憑證問題:無法取得本地發行者憑證
在 Windows 本機開發時可能會發生此問題。我使用的是 Windows 10 (x64)
為了修復錯誤,我從 https://curl.haxx.se/docs/caextract.html 下載了 cacert.pem
在 php.ini 中設定以下值
curl.cainfo = "C: \ php-8.0.7 \ extras \ ssl \ cacert.pem"
cURL 錯誤 60:SSL 憑證問題:無法取得本地發行者憑證
當 curl.cainfo 變數設定不正確時,就會出現這個本機開發錯誤。
我在 PHP 版本 7.3.1 中遇到這個問題
為了修復錯誤,我從 https://curl.haxx.se/docs/caextract.html 下載了 cacert.pem
在 php.ini 中設定以下路徑
curl.cainfo="D:\wamp64\bin\php\php7.3.1\extras\ssl\cacert.pem"
openssl.cafile="D:\wamp64\bin\php\php7.3.1\extras\ssl\cacert.pem"
即使新增了路徑並重新啟動 Apache,在 phpinfo() 中,兩個路徑仍然顯示空白。
只有透過專案的 PHP 程式碼設定才能消除錯誤。
對我有用的程式碼範例:-
$guzzle = new \GuzzleHttp\Client(['verify' => 'D:\wamp64\bin\php\php7.3.1\extras\ssl\cacert.pem']);
我在上一則留言中編輯了錯誤的 php.ini 檔案。
即使載入的設定路徑在 WAMP 伺服器的 phpinfo() 中顯示為「D:\wamp64\bin\apache\apache2.4.37\bin\php.ini」,它實際上載入的是「D:\wamp64\bin\apache\apache2.4.37\bin\phpForApache.ini」
一旦我在 phpForApache.ini 中設定了兩個變數,詳細資訊就會顯示在 phpinfo() 中,錯誤也消失了,無需額外的程式碼。