2016-04-07 124 views
3

我在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錯誤返回在這些網站上:

  1. GitHub
  2. Composer
  3. PayPal TLS Test

請在列表中找到第一個就是我」已經嘗試過迄今爲止,但沒有任何作品

嘗試谷歌第一:

  1. SSL error SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
  2. PHP - SSL certificate error: unable to get local issuer certificate
  3. 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.comgetcomposer.orgpaypal.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:禁用對等驗證將是不可接受的。

回答

0

在我的情況下,確保存在正確的cert.pem文件是不夠的。您還需要使用date.timezone鍵(在我的情況下,我將它設置爲America/Los Angeles)將php.ini中的時區設置爲您的實際時區。否則,PHP將默認使用UTC,並且系統時鐘將顯示爲關閉。這解決了我在Mac OS X El Capitan(10.11.2)中遇到的問題。

+0

試過你的方式,但也沒有工作。 –

相關問題