2016-04-07 29 views
3

私はMacOSx El CapitanのXAMPPの一部としてPHPバージョン5.6を実行しており、数少ない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

i「がどのような最初のリストを見つけてください。試したこれまでのところ、何も動作しません。最初

しようとしましたグーグル:

  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());'

を提出し、その結果となりました。 /Applications/XAMPP/xamppfiles/share/openssl/cert.pem

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] => 
) 

保存は

openssl.cafile = /Applications/XAMPP/xamppfiles/share/openssl/cert.pem 
curl.cainfo = /Applications/XAMPP/xamppfiles/share/openssl/cert.pem 

リスタートApacheのが、無大成功を次のようにphp.iniを更新しました。 PEMファイルを読み取ろうとしました

echo file_get_contents("/Applications/XAMPP/xamppfiles/share/openssl/cert.pem"); 

テストケースが

それはgoogle.comgithub.comgetcomposer.orgpaypal.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キーを使用してphp.iniのタイムゾーンを実際のタイムゾーンに設定する必要があります(私はアメリカ/ロサンゼルスに設定します)。それ以外の場合、PHPはデフォルトでUTCを使用し、システムクロックはオフに見えます。これにより、Mac OS X El Capitan(10.11.2)の問題が解決されました。

+0

あなたのやり方を試しましたが、うまくいきませんでした。 –

関連する問題