我在MacOSx El Capitan中運行PHP 5.6版本作爲XAMPP的一部分,並在幾個https
網站上出現錯誤。例如:https://www.google.com/
php SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
但是,沒有SSL錯誤返回在這些網站上:
請在列表中找到第一個就是我」已經嘗試過迄今爲止,但沒有任何作品
嘗試谷歌第一:
- SSL error SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
- PHP - SSL certificate error: unable to get local issuer certificate
- HTTPS and SSL3_GET_SERVER_CERTIFICATE:certificate verify failed, CA is OK
手冊
1.更新cert.pem文件
php -r 'print_r(openssl_get_cert_locations());'
和結果。
Array
(
[default_cert_file] => /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => /Applications/XAMPP/xamppfiles/share/openssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => /Applications/XAMPP/xamppfiles/share/openssl/private
[default_default_cert_area] => /Applications/XAMPP/xamppfiles/share/openssl
[ini_cafile] => /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
[ini_capath] =>
)
保存在/Applications/XAMPP/xamppfiles/share/openssl/cert.pem
更新php.ini
具有以下
openssl.cafile = /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
curl.cainfo = /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
重啓動Apache的,但沒有更迭。試圖讀取PEM文件(不返回錯誤)
echo file_get_contents("/Applications/XAMPP/xamppfiles/share/openssl/cert.pem");
測試用例
它的工作原理罰款github.com
getcomposer.org
paypal.com
但不是在google.com
(google.com的作品,以及我的Windows系統上)
php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); var_dump(curl_exec($ch)); var_dump(curl_error($ch));'
結果:PayPal_Connection_OKbool(true)
但在google.com
php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.google.com/"); var_dump(curl_exec($ch)); var_dump(curl_error($ch));'
結果:string(63) "SSL certificate problem: unable to get local issuer certificate"
P.S:禁用對等驗證將是不可接受的。
試過你的方式,但也沒有工作。 –