2016-04-07 3 views
3

Я запускаю PHP версию 5.6 как часть XAMPP в MacOSx El Capitan и имею ошибку на нескольких сайтах 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

Вы можете найти список первых, что я» попробовал пока ничего не работает.

Пробовал Google первым:

  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, но нет SucceS. Пробовал читать файл PEM (не возвращается никакой ошибки)

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

Пример теста

Он отлично работает на github.comgetcomposer.orgpaypal.com но не на google.com (google.com работает, а на моей системе окон)

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 не был достаточным. Вам также необходимо установить свой часовой пояс в вашем php.ini в ваш текущий часовой пояс, используя ключ date.timezone (в моем случае я установил его в Америку/Лос-Анджелес). В противном случае PHP по умолчанию будет использовать UTC, и ваши системные часы будут отключены. Это решило проблему для меня в Mac OS X El Capitan (10.11.2).

+0

Пробовал свой путь, но не работал. –

Смежные вопросы

 Смежные вопросы