MacOS 10.11
Dev Desktop Версия 2
PHP 5.6
Попытка загрузить шаблонную страницу Drupal 8, которая содержит Google Map. Работает на производственных и dev серверах, но не локально. Страница сообщает: «На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже». Ошибка при локальной загрузке и обратной трассировке показывает следующую информацию:
Ошибка:
GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in GuzzleHttp\Handler\CurlFactory::createRejection() (line 187 of vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php).
Диагноз:
array(8) { ["default_cert_file"]=> string(68) "/Users/acquia/csbworkdir/dmitrybezer/libopenssl/install/ssl/cert.pem" ["default_cert_file_env"]=> string(13) "SSL_CERT_FILE" ["default_cert_dir"]=> string(65) "/Users/acquia/csbworkdir/dmitrybezer/libopenssl/install/ssl/certs" ["default_cert_dir_env"]=> string(12) "SSL_CERT_DIR" ["default_private_dir"]=> string(67) "/Users/acquia/csbworkdir/dmitrybezer/libopenssl/install/ssl/private" ["default_default_cert_area"]=> string(59) "/Users/acquia/csbworkdir/dmitrybezer/libopenssl/install/ssl" ["ini_cafile"]=> string(47) "/Applications/DevDesktop/common/cert/cacert.pem" ["ini_capath"]=> string(0) "" }
Backtrace:
GuzzleHttp\Handler\CurlFactory::finishError(Object, Object, Object) (Line: 103)
GuzzleHttp\Handler\CurlFactory::finish(Object, Object, Object) (Line: 43)
GuzzleHttp\Handler\CurlHandler->__invoke(Object, Array) (Line: 28)
GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object, Array) (Line: 51)
GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object, Array) (Line: 37)
GuzzleHttp\PrepareBodyMiddleware->__invoke(Object, Array) (Line: 30)
GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object, Array) (Line: 70)
GuzzleHttp\RedirectMiddleware->__invoke(Object, Array) (Line: 57)
GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object, Array) (Line: 67)
GuzzleHttp\HandlerStack->__invoke(Object, Array) (Line: 277)
GuzzleHttp\Client->transfer(Object, Array) (Line: 125)
GuzzleHttp\Client->requestAsync('get', 'https://maps.googleapis.com/maps/api/geocode/json', Array) (Line: 131)
GuzzleHttp\Client->request('get', 'https://maps.googleapis.com/maps/api/geocode/json', Array) (Line: 89)
GuzzleHttp\Client->__call('get', Array) (Line: 273)
GuzzleHttp\Client->get('https://maps.googleapis.com/maps/api/geocode/json', Array) (Line: 273)
Похоже, что «default_cert_file» используется (и не существует локально), а файл, который существует «/Applications/DevDesktop/common/cert/cacert.pem» — нет. По умолчанию это жесткая проводка из сборки PHP в Dev Desktop. Я не уверен, что Guzzle не пытается найти другие варианты из доступного списка или у меня есть другие проблемы.
Есть ли способ переопределить «default_cert_file» из php.ini … ?? Или есть лучшее решение?
Я зашел так далеко, что создал местоположение, которое искал default_cert_file, просто чтобы посмотреть, решит ли это это, но это не так.
Попробуйте скачать файл сертификата оттуда:
https://curl.haxx.se/ca/cacert.pem
и добавьте php.ini
; Added CA file path
curl.cainfo = "{REPLACE WITH FILE PATH}/cacert.pem"
Вам должно быть хорошо идти
Других решений пока нет …