XAMPP — WAMPP PHP — Ошибка сертификата SSL: невозможно получить сертификат локального эмитента

Эта ошибка возникает, когда curl.cainfo а также openssl.cafile свойства конфигурации php.ini файл, не указывайте ни один действительный сертификат, который позволит вам создать соединение с ssl, так как они будут недействительными. Вы столкнетесь с этим, если будете работать с cURL или используете какой-либо инструмент, который создает запрос к внешним серверам.

Этот вопрос специально брошен GuzzleHttp\Exception\RequestException и GuzzleHttp\Ring\Exception\RingException классы, расположенные в Жрать PHP HTTP клиент. Многие известные проекты, такие как Symfony, полагаются на эту библиотеку для выполнения некоторых типичных задач http, таких как создание новых проектов (в последней версии 3.0).

Если вы найдете свой php.ini файл, и вы ищете [curl], эти параметры, вероятно, будут закомментированы и без какого-либо значения:

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo=
[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the "cafile" SSL stream context
; option.
;openssl.cafile=

Чтобы решить эту проблему, нам просто нужно указать абсолютный путь к действительному сертификату (cacert.pem файл) в обоих свойствах.

Решение

Во-первых, вероятно, ваш дистрибутив php (с использованием Wamp, Xampp или любого из них), вероятно, будет содержать действительный сертификат, но он не включен.

Используя файловую систему вашей операционной системы, найдите файл с именем cacert.pem в папке вашего установленного дистрибутива.

Cacert.pem файл ssl curl

В этом случае для Xampp v5.6.23 (PHP 5.6.23) файл существует и находится внутри папки perl. Теперь скопируйте полный путь к файлу cacert.pem файл в буфер обмена.

Заметка

Если ваш xampp (или другой дистрибутив) не содержит файлов с этим именем, затем загрузите файл cacert.pem здесь и сохраните его где-нибудь внутри пути xampp и скопируйте путь, где вы сохранили его в буфер обмена.

Откройте файл php.ini еще раз и найдите [curl] область, теперь мы собираемся раскомментировать и изменить значение свойств curl.cainfo и openssl.cafile с абсолютным путем, который мы имеем в буфере обмена (путь, где расположен сертификат) между двойными кавычками («путь»):

Заметка

Даже в некоторых дистрибутивах xampp, в вашем php.ini вы не найдете скручиваемость или область openssl, поэтому просто добавьте ее в конце php.ini файл и сохранить изменения.

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo ="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"
[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the "cafile" SSL stream context
; option.
openssl.cafile="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"

в заключение перезапустите apache и любые другие сервисы, такие как mysql, и попробуйте снова сделать все, что вы делали. Запрос теперь должен работать без проблем.

Повеселись !

Ссылка на основную публикацию
Adblock
detector