Я использую ПУВР на локальную среду разработки и пытаюсь зарядить кредитной карты, но получаю сообщение об ошибке:
завиток ошибка 60: SSL-сертификата проблема: не удается получить местного поставщика сертификата
Я искал много на Google, и многие люди предполагают, что я скачать этот файл: cacert.ПЭМ, положил его где-то и ссылаться на него в мой PHP.Ини. Это в мой PHP.Ини:
curl.cainfo = "C:\Windows\cacert.pem"
Тем не менее, даже после перезагрузки моего сервера в несколько раз и меняя путь, я получаю то же сообщение об ошибке.
Я использую ПУВР из модулей Apache и иметь ssl_module включен. И от расширения ПГП у меня php_curl включен.
Еще сообщение об ошибке. Почему это происходит?
Теперь я это исправить: Как исправить ошибку в PHP ошибка скручиваемость 60 протокол SSL
Что говорит о том, что я добавляю эти строки в мои варианты завиток:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);
Где я могу добавить параметры, чтобы мой локон? Видимо, не через командную строку, так как мой Кинк не'т найти команда "curl_setopt"и
Редактировать
Этот код я использую:
public function chargeStripe()
{
$stripe = new Stripe;
$stripe = Stripe::make(env('STRIPE_PUBLIC_KEY'));
$charge = $stripe->charges()->create([
'amount' => 2900,
'customer' => Input::get('stripeEmail'),
'currency' => 'EUR',
]);
dd($charge);
// echo $charge[Input::get('stripeToken')];
return Redirect::route('step1');
}
рабочий раствор:
сервер XAMPP был
похож на другие среды
C:\xampp\php\extras\ssl\cacert.pem
;;;;;;;;;;;;;;;;;;;; ; в PHP.Ини вариантов ; ;;;;;;;;;;;;;;;;;;;;
завиток.cainfo = "и C:\xampp\php\extras\ssl\cacert.pem"
Проблема решена!
Если вы используете PHP 5.6 с жрут, жрут и перешли на использование библиотеки PHP автоопределение для справок, а не это's процесс (ссылка). В PHP описаны изменения здесь.
Вы можете сбросить, где PHP ищут, используя:
var_dump(openssl_get_cert_locations());
Для OS X тестирование, вы можете использовать доморощенного установить настояться в OpenSSL установите OpenSSL
и потом в OpenSSL.cafile=/usr/местные/и т. д./В OpenSSL/Серт.УГР
в PHP.ini или настройки Зенд сервер (под пакет).
Пакет сертификат также можно получить с скручиваемость/Мозилла на сайте завиток: https://curl.haxx.se/docs/caextract.html
Если у вас есть пакет, либо разместить его там, где PHP уже смотрела (который вы узнали выше) или обновить в OpenSSL.cafile
в PHP.Ини. (Как правило, /и т. д./РНР.Ини
или /etc/php в/7.0/под/РНР.Ини
или /etc/php в/РНР.Ини
в Unix.)
Внимание ПУВР/Вордпресс/пользователей Windows. Я имел эту проблему в течение нескольких часов и даже правильный ответ был делаешь это для меня, потому что я был редактирования неверной версии PHP.ini-файл, потому что на этот вопрос было отвечено в XAMPP и не для пользователей ПУВР, хотя вопрос был для ПУВР.
здесь's то, что я сделал
Скачать пакет сертификат.
Положить его внутри C:\wamp64\bin\php\your версия PHP\массовки\протокол SSL
Убедитесь, расширением mod_ssl файл.так что
внутри C:\wamp64\bin\apache\apache(версия) модули\
Включите расширением mod_ssl в файле httpd.конф внутри каталога Апачи C:\wamp64\bin\apache\apache2.4.27\conf`
Включить php_openssl.dll
в РНР.Ини
. Помните, моя проблема была в том, что у меня было два PHP.ini-файлы и мне нужно сделать это в обоих из них. Первый может быть расположена внутри свой значок на панели задач здесь ПУВР.
а другой находится в C:\wamp64\bin\php\php(версия)`
найти место для обоих в PHP.Ини файлов и найти завивать линии.cainfo =
и дать ему этот путь
завиток.cainfo = "и C:\wamp64\bin\php\php(версия)\дополнительно\протокол SSL\cacert.УГР"
в
Теперь сохраните файл и перезапустите ваш сервер и вы должны быть хорошо идти
Жрут, который используется cartalyst/полоса, Выполните следующие действия, чтобы найти правильный архиве сертификатов для проверки сертификата сервера в отношении:
/usr/местные/и т. д./поддержка/Серт.УГР
(ОС Х; обеспечивается доморощенного)Вы хотите, чтобы убедиться, что значения первых двух параметров, определены надлежащим образом, выполнив простой тест:
echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";
Кроме того, попробуйте записать файл в местоположениях, указанных корпорацией #7 или #8.
Если вы'повторно не в состоянии изменить в PHP.Ини вам также может указывать на cacert.файл PEM с такой код:
$http = new GuzzleHttp\Client(['verify' => '/path/to/cacert.pem']);
$client = new Google_Client();
$client->setHttpClient($http);
То, что я сделал вложенностями использовать (openssl_get_cert_locations()); умереть;
в любой PHP-скрипт, который дал мне информацию о дефолтах, что мой локальном PHP с помощью:
array (size=8)
'default_cert_file' => string 'c:/openssl-1.0.1c/ssl/cert.pem' (length=30)
'default_cert_file_env' => string 'SSL_CERT_FILE' (length=13)
'default_cert_dir' => string 'c:/openssl-1.0.1c/ssl/certs' (length=27)
'default_cert_dir_env' => string 'SSL_CERT_DIR' (length=12)
'default_private_dir' => string 'c:/openssl-1.0.1c/ssl/private' (length=29)
'default_default_cert_area' => string 'c:/openssl-1.0.1c/ssl' (length=21)
'ini_cafile' => string 'E:\xampp\php\extras\ssl\cacert.pem' (length=34)
'ini_capath' => string '' (length=0)
Как вы можете заметить, я поставил ini_cafile или завить вариант Ини.cainfo. Но в моем случае завиток будет пытаться использовать в "default_cert_file" и чего не существует.
Я скопировал файл из https://curl.haxx.se/ca/cacert.pem в расположение "и default_cert_file" и (c:/openssl-1.0.1c/ssl/cert.pem) и я был в состоянии заставить его работать.
Это было для меня единственное решение.
Я нашел решение, которое работает для меня. Я понижен с последними жрут до версии ~4.0 и это сработало.
В композитора.JSON и добавить "и guzzlehttp/жрать" и: " в~4.0 и"
Надеюсь, что это помогает кто-то
У меня эта проблема появляется из-голубым в один прекрасный день, когда жрут(5) скрипт пытается подключиться к хосту по протоколу SSL. Конечно, я мог бы отключить опцию проверки жрут/виться, но это'ы явно не правильный путь.
Я попробовала ** все перечисленные здесь и в аналогичных нитей, то в конечном итоге пошли на терминал с OpenSSL, чтобы протестировать домен, с которого я пытался подключиться:
openssl s_client -connect example.com:443
... и получил первые несколько строк с указанием:
CONNECTED(00000003)
depth=0 CN = example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = example.com
verify error:num=21:unable to verify the first certificate
verify return:1
... пока все работало, при попытке других направлений (т. е.: google.com и т. д.)
Это побудило меня связаться с доменом, я уже давно пытаетесь подключиться, и действительно, у них была проблема с их стороны, что уже подкрался. Это было решено, и мой сценарий и я вернулся к работе.
Так что... если вы'вновь рвать на себе волосы, дать Украине шанс и посмотреть, если там'ы что-нибудь с ответом от места, где вы пытаетесь подключиться. Может быть, проблема вовсе'т так что 'местных' ведь иногда.
Все ответы правильные ; но самое главное - вы должны найти правильный РНР.ini-файл. проверьте эту команду в cmd " и на PHP --ini файл " не правильный ответ как найти нужный файл php.ini-файл.
если вы редактируете
curl.cainfo ="PATH/cacert.pem"
и проверить
var_dump(openssl_get_cert_locations());
затем завить.cainfo должны иметь значение. если нет то, что's не право на PHP.ini-файл;
*Я рекомендую вам искать *.ini в ПУВР/bin или xxamp/bin или любой сервер вы используете и менять их по одному и проверить. *
Вы пробовали..
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
Если вы потребляете надежного источника, возможно, Вам не нужно, чтобы проверить SSL-сертификат.
Будьте уверены, что вам откроют в PHP.ini-файл прямо на ваше окно Проводника. (в моем случае:
C:\DevPrograms\wamp64\bin\php\php5.6.25`).
Дон'т использовать ярлык `в PHP.Ини в ПУВР/Xamp значок'меню в системном трее. Этот ярлык Не'т работать в этом случае.
Затем отредактировать, что в PHP.Ини
:
curl.cainfo ="C:/DevPrograms/wamp64/bin/php/cacert.pem"
и
openssl.cafile="C:/DevPrograms/wamp64/bin/php/cacert.pem"
После сохранения в PHP.Ини
вы Don'т нужна, чтобы "перезапуск всех служб" в значок ПУВР или закрыть/открыть заново УМК.
Я просто возникла эта же проблема с фреймворк Laravel 4 PHP фреймворк, который использует пакет композитор guzzlehttp/жрут`. По некоторым причинам, SSL-сертификат для mailgun вдруг остановился форумчанин и у меня тот же, что "ошибка 60 и" сообщение.
Если, как я, вы находитесь на виртуальном хостинге без доступа к РНР.Ини, другие решения невозможны. В любом случае, жрать это инициализации клиентского кода, который, скорее всего, сведет на нет
в PHP.эффекты Ини`:
// vendor/guzzlehttp/guzzle/src/Client.php
$settings = [
'allow_redirects' => true,
'exceptions' => true,
'decode_content' => true,
'verify' => __DIR__ . '/cacert.pem'
];
Здесь жрать сил использование собственных внутренних cacert.PEM-файл, который, вероятно, теперь устарело, вместо использования предоставляемого завиток'среда с. Изменение этой линии (на Linux по крайней мере) настраивается жрут с помощью curl'ы по умолчанию логика проверки SSL и фиксированная моя проблема:
'verify' => true
Вы также можете установить это значение "false", если вы не'т заботятся о безопасности вашего соединения SSL, но это's не является хорошим решением.
Поскольку файлы в поставщика
не должны быть подделаны, лучшим решением было бы настройки жрут клиент по использованию, но это было просто слишком трудно сделать в фреймворк Laravel 4.
Надеюсь, это сэкономит кому-то пару часов отладки...
когда я запускаю 'вложенностями(php_ini_loaded_file());'
Я получаю этот выход на моей странице
'C:\Development\bin\apache\apache2.4.33\bin\php.ini' (длина=50)'
и чтобы получить PHP, чтобы загрузить мой файл CERT мне пришлось редактировать PHP.ini в этот путь 'C:\Development\bin\apache\apache2.4.33\bin\php.ini'
и добавить в OpenSSL.cafile="и C:/Development/bin/php/php7.2.4/extras/ssl/cacert.pem" где я скачал и разместить свой файл сертификата от https://curl.haxx.se/docs/caextract.html
я на Windows 10, используя Друпал 8, WAMP и php7.2.4
Я потратил слишком много времени, чтобы выяснить эту проблему для меня.
У меня PHP версии 5.5 и мне нужно обновить до 5.6.
В версии < 5.6 жрать будете использовать его's собственное cacert.файл PEM, но в более высокой версии PHP он будет использовать систему'ы cacert.файл PEM.
Я тоже скачал файл отсюда https://curl.haxx.se/docs/caextract.html и установить его в PHP.Ини.
Ответ нашли в жрет StreamHandler.php файл https://github.com/guzzle/guzzle/blob/0773d442aa96baf19d7195f14ba6e9c2da11f8ed/src/Handler/StreamHandler.php#L437
// в PHP 5.6 или больше найдете системы сертификата по умолчанию. Когда 5.6 // < используйте жрут комплекте cacert.
Это может быть крайним случаем, но в моем случае проблема была не клиент конф (у меня уже был завиток.cainfo
настраивается в в PHP.Ини
), а удаленный сервер не правильно настроен:
Он не отправил все промежуточные сертификаты в цепи. Нет ошибка при просмотре сайта через Chrome, но с PHP я получил следующее сообщение об ошибке.
ошибка скручиваемость 60
После включения промежуточные сертификаты в конфигурации удаленного веб-сервера он работал.
Вы можете использовать этот сайт для проверки конфигурации SSL вашего сервера:
Как вы используете Windows, я думаю, что ваш разделитель пути '\' (и '/' на Linux).
Попробуйте использовать постоянный DIRECTORY_SEPARATOR
. Ваш код будет более компактен.
Попробуйте:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cacert.pem');
Редактировать: и писать полный путь. У меня были некоторые проблемы с относительными путями (возможно, завиток выполнен из другой директории?)