Эта ошибка возникает, когда 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
в папке вашего установленного дистрибутива.
В этом случае для 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, и попробуйте снова сделать все, что вы делали. Запрос теперь должен работать без проблем.
Повеселись !