Я использую PHP версии 5.6.3 как часть XAMPP в Windows 7.
Когда я пытаюсь использовать Mandrill API, я получаю следующую ошибку:
Неопределенное исключение «Mandrill_HttpError» с сообщением «Ошибка вызова API для сообщений / шаблона отправки: проблема с сертификатом SSL: невозможно получить сертификат локального эмитента»
Я уже попробовал все, что я прочитал в StackOverflow, включая добавление следующего в файл php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
И, конечно же, скачал в это место файл cacert.pem с http://curl.haxx.se/docs/caextract.html.
но после этого перезапустил XAMPP и сервер Apache, но все равно получил ту же ошибку.
Я действительно не знаю, что еще попробовать.
Может кто-нибудь посоветовать, что еще можно попробовать?
Ответы:
Наконец-то получил это на работу!
Загрузите комплект сертификатов .
Положите это где-нибудь. В моем случае это был
c:\wamp\
каталог (если вы используете Wamp 64 bit, то этоc:\wamp64\
).Включите
mod_ssl
в Apache иphp_openssl.dll
вphp.ini
(раскомментируйте их, удалив;
в начале). Но будьте осторожны, моя проблема заключалась в том, что у меня было дваphp.ini
файла, и мне нужно сделать это в обоих. Одним из них является тот, который вы получаете от значка панели задач WAMP, а другой, в моем случае, вC:\wamp\bin\php\php5.5.12\
Добавьте эти строки к вашему сертификату в обоих
php.ini
файлах:Перезапустите сервисы Wamp.
источник
;
в начале, и мне потребовались часы, чтобы понять, что это означает, что это комментарий. поэтому для таких нубов, как я, нужно убрать;
и ихBut be careful, my problem was that I had two php.ini files and I need to do this in both of them. One is the one you get from your WAMP taskbar icon, and another one is, in my case, in C:\wamp\bin\php\php5.5.12\
У меня была такая же проблема в файле Mandrill.php после строки 65, где написано: $ this-> ch = curl_init ();
Добавьте следующие две строки:
Это решило мою проблему, а также отправило электронное письмо с использованием localhost, но я предлагаю НЕ использовать его в живом варианте. На вашем живом сервере код должен работать без этого кода.
источник
CURLOPT_SSL_VERIFYPEER
чтобыfalse
работал.Спасибо @Mladen Janjetovic,
Ваше предложение сработало для меня в Mac с установленным ampps.
Скопировано: http://curl.haxx.se/ca/cacert.pem
Для того, чтобы:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
И обновил
php.ini
с этим путем и перезапустил Apache:И применил ту же настройку в установке Windows AMPPS, и она прекрасно сработала в ней.
То же самое для Wamp.
Если вы ищете создание нового SSL-сертификата с использованием SAN для localhost, шаги в этом посте сработали для меня
Centos 7 / Vagrant / Chrome Browser
.источник
При просмотре http://curl.haxx.se/docs/caextract.html страницы большими буквами вы увидите раздел под названием:
Прочтите его, затем загрузите версию сертификатов, которая включает сертификаты «RSA-1024». https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Те будут работать с Mandrill.
Отключение SSL - плохая идея.
источник
Вышеуказанные шаги, хотя и полезны, не работали для меня в Windows 8. Я не знаю взаимосвязи, но следующие шаги сработали. В основном это изменение в файле cacert.pem. Надеюсь, это кому-нибудь поможет.
источник
Я нашел новое решение без какой-либо обязательной сертификации для вызова curl только добавить двухстрочный код.
источник
Если у вас нет доступа к php.ini , добавление этого кода (после вашей
$ch = curl_init();
строки) работает для меня:Затем вам просто нужно скачать ca-bundle.crt и сохранить его в указанном вами месте
$certificate_location
.источник
У меня очень простое решение этой проблемы. Вы можете сделать это без какого-либо файла сертификата ..
Перейдите на корневую папку Laravel -> Vender -> guzzlehttp -> guzzle -> src
откройте Client.php
найти $ по умолчанию Массив. это выглядит так ...
Теперь главное задание - изменить значение ключа проверки .
Поэтому после этого он не будет проверять сертификат SSL для запроса CURL ... Это решение работает для меня. Я нашел это решение после многих исследований ...
источник
Разрабатывая приведенные выше ответы для развертывания сервера.
должен выполнить трюк для среды разработки без ущерба для сервера при развертывании.
источник
Я пробовал это работает
открыто
и измени это
к этому
источник
У меня была такая же проблема при создании моего приложения в AppVeyor.
c:\php
echo extension=php_openssl.dll >> c:\php\php.ini
echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
источник
Если ни одно из приведенных выше решений не работает, попробуйте обновить установку XAMPP до более новой версии.
Я запускал XAMPP с php 5.5.11, точно такой же код не работал, я обновился до XAMPP с php 5.6.28, и вышеприведенные решения работали.
Кроме того, только обновление PHP не работало, либо похоже на сочетание настроек apache и php в этой версии XAMPP.
Надеюсь, это кому-нибудь поможет.
источник
Я получил ошибку как:
Я использую машину Windows. Таким образом, я следовал за нижеперечисленными шагами.
Надеюсь, что это может помочь кому-то
источник
Я столкнулся с такой проблемой в моей локальной системе, но не на живом сервере. Я также упоминал о другом решении на этой странице, которое было раньше, но оно не работало в localhost. Поэтому я нашел новое решение этого, которое работает на сервере localhost-WAMP .
иногда система не может найти ваш cacert.pem в вашем диске. так что вы можете определить это в своем коде, где вы собираетесь использовать CURL
проверьте этот код CURL .
но это решение может не работать на реальном сервере. из-за абсолютного пути cacert.pem
источник
У меня есть правильное решение этой проблемы, давайте попробуем понять причину этой проблемы. Эта проблема возникает, когда ssl удаленных серверов не может быть проверен с использованием корневых сертификатов в хранилище сертификатов вашей системы или удаленный ssl не установлен вместе с цепочечными сертификатами. Если у вас есть система Linux с доступом root ssh, то в этом случае вы можете попробовать обновить хранилище сертификатов с помощью следующей команды:
update-ca-certificates
Если все еще, это не работает, тогда вам нужно добавить корневой и промежуточный сертификат удаленного сервера в вашем хранилище сертификатов. Вы можете скачать корневые и промежуточные сертификаты и добавить их в каталог / usr / local / share / ca-сертификаты, а затем запустить команду
update-ca-certificates
. Это должно сделать свое дело. Аналогично для окон вы можете искать, как добавить root и промежуточный сертификат.Другой способ решить эту проблему - попросить команду удаленного сервера добавить ssl-сертификат в виде набора корневого сертификата домена, промежуточного сертификата и корневого сертификата.
источник
для жреты вы можете попробовать это:
проверено на жрет / жрет 3. *
источник