Laravel 5 Socialite - ошибка cURL 77: ошибка установки сертификата для проверки местоположения

Я использую Socialite в Laravel 5 для настройки входа в Facebook. Я внимательно следовал инструкциям, пока не застрял со следующей ошибкой.

cURL error 60: SSL certificate problem: unable to get local issuer certificate

поэтому я нашел этот ответ, чтобы исправить это действительно прошло, но потом я получил эту ошибку

cURL error 77: error setting certificate verify locations:
CAfile: /Applications/XAMPP/xamppfiles/cacert.pem
CApath: none

Есть идеи, в чем причина этой ошибки?! и как исправить?!


person omarsafwany    schedule 14.05.2015    source источник
comment
Вы используете настоящий SSL-сертификат или самосертифицированный сертификат? Существует ли файл /Applications/XAMPP/xamppfiles/cacert.pem?   -  person detheridge02    schedule 14.05.2015
comment
@detheridge02 detheridge02 Я скачал файл, как указано в прикрепленном ответе, поэтому он находится по пути /Applications/Xampp/xamppfiles   -  person omarsafwany    schedule 15.05.2015
comment
вам нужно указать абсолютный путь, а не относительный путь   -  person Mourad El Aomari    schedule 16.10.2016
comment
Будьте осторожны, если установлен open_basedir, чтобы он включал каталог, в котором находится cacert.pem.   -  person Frank Forte    schedule 05.02.2018
comment
Вы уверены, что файл называется cacert.pem или cacert.perm? Правильно проверьте расширения и убедитесь, что это то, что у вас есть в пути сертификата вашей среды, обычно расположенном в файле php.ini по адресу curl.cainfo =C:/wamp64/bin/php/php7.2.10/extras/ssl/cacert.pem.   -  person Akah    schedule 05.12.2018


Ответы (23)


Я тоже застрял на этой проблеме. Оказалось, что у меня неправильно указан путь к моему сертификату в моем файле php.ini. Забыл расширение .txt.

Что у меня было:

curl.cainfo = "C:\xampp\php\cacert.pem"

На что я изменил:

curl.cainfo = "C:\xampp\php\cacert.pem.txt"

Надеюсь это поможет.

person LyleK    schedule 19.05.2015
comment
Не работает до сих пор. Мой файл называется просто cacert.pem без расширения .txt. - person omarsafwany; 12.10.2015
comment
@omarsafwany, возможно, расширение вашего файла было скрыто. Сертификат в основном представляет собой текстовый файл, поэтому расширение .txt следует добавить вместе с его абсолютным путем. Также перезапустите сервер Apache, чтобы эти изменения вступили в силу. - person Vincent Edward Gedaria Binua; 25.02.2016
comment
+ можно попробовать переместить файл .pem в папку 'bin/php/version-X.X/ext'. - person star18bit; 27.02.2016
comment
Для меня это был типичный PEBKAC - пока я настраивал (читай: копировал и вставлял) C:\xampp\..., фактическая установка Xampp была в C:\Program Files\xampp\.... - person mbirth; 27.02.2017
comment
Я должен согласиться, что загруженный файл pem был преобразован в файл с расширением .txt. Мой на удивление заработал, когда я изменил его на cacert.pem.txt. Я уже заметил, что тип файла сохраняется в текстовом формате, но я не решался использовать расширение .txt, но в конце концов попробовал, и это сработало. - person Charmie; 12.04.2017
comment
В моем случае это относительный путь. Необходимо указать полный путь. Если вам это нужно относительно кода, вы можете определить путь динамически, используя, например, dirname(__FILE__).'/../cacert.pem'. - person Arie; 27.03.2019


Моя ошибка:

cURL-ошибка 77: ошибка настройки сертификата для проверки местоположения: CAfile: C:\xampp\apache\bin\curl-ca-bundle.crt CApath: нет (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)


Это хорошо работает для меня:

  1. Загрузите сертификат с: https://curl.haxx.se/ca/cacert.pem
  2. Переименуйте файл cacert.pem в curl-ca-bundle.crt.
  3. Скопируйте файл в path/to/xampp/apache/bin
  4. Перезапустите апач
person Samsul Arif Zulvian    schedule 20.03.2019
comment
Спасибо. Меня спасло переименование. Будьте здоровы - person Trisno Raynaldy; 14.05.2019

  1. Сохраните этот сертификат (https://curl.haxx.se/ca/cacert.pem) как cacert.pem.txt в C:\xampp\php.
  2. Добавить к php.ini:

    curl.cainfo = "C:\xampp\php\cacert.pem.txt"
    
  3. Не забудьте перезапустить XAMPP (он не будет работать, пока не перезапустится)

Тогда работает нормально!

person Viktoria Brown    schedule 03.05.2016
comment
У меня сработало, хотя мне пришлось точно указать свой путь, например "C:\wamp64\bin\php\extras\cacert.perm" or "C:\wamp64\bin\php\php7.2.1\extras\cacert.perm" . Также не забудьте перезапустить веб-сервер после внесения изменений в файл php ini. - person Akah; 21.10.2019

  1. Скачать с (https://curl.haxx.se/ca/cacert.pem)
  2. Измените имя «cacert.pem» на «curl-ca-bundle.crt».
  3. В 'php.ini' удалите ';' в следующей строке: curl.cainfo="C:\xampp\apache\bin\curl-ca-bundle.crt"

Это сработало для меня.

person Felix Htoo    schedule 13.03.2019

У меня возникли некоторые проблемы, следуя инструкциям в отношении ошибки 77.

В Windows 7, в зависимости от ваших настроек безопасности, загруженный файл может быть заблокирован. Смотрите скриншот:

«Свойства

После того, как я разблокировал файл и обеспечил надлежащие права доступа пользователя, мне также пришлось поместить файл в следующее место:

C:\xampp\apache\bin\cacert.pem.txt

В дополнение к изменению php.ini в соответствии с другими сообщениями по этому вопросу.

curl.cainfo="C:\xampp\php\cacert.pem.txt"

После выполнения вышеуказанных шагов, перезапуска Apache через панель управления XAMPP, ошибка была устранена.

person Chason Arthur    schedule 24.04.2019

Оформить двойную кавычку в файле php.ini: если вы скопировали и вставили из Интернета, возможно, вы ошиблись двойной кавычкой:

«C:\xampp\php\cacert.pem.txt»

вместо

"C:\xampp\php\cacert.pem.txt"

person messimalex    schedule 25.08.2016
comment
Спасибо, если вы не упомянете об этом, я, вероятно, потратил бы часы, пытаясь понять. - person Rafael D'Arrigo; 21.05.2020

Вам необходимо заменить существующий сертификат другим здесь. После этого:

  • Извлеките и добавьте его в xampp\php\ext
  • Открыть xampp\php\php.ini
  • Добавьте эту строку curl.cainfo='location from the first step' в конец файла.
  • Перезапустите, и теперь он должен работать.

Это ссылка на источник.

person omarsafwany    schedule 08.11.2016

Для окон

У меня была такая же проблема после того, как я обновил php в окне 2008. Внезапно все мои коды php перестали работать. Что я сделал, я открыл php.ini, затем нашел строку

;curl.cainfo =

и я изменился на

curl.cainfo = "C:\Program Files (x86)\PHP\v7.0\cacert.pem" (не забудьте удалить ; перед curl.cainfo)

и все пошло нормально. Вам нужно загрузить файл сертификата cert.pem и поместить его в любое место на вашем server и измените строку, как я сделал в php.ini

person Community    schedule 23.10.2017

Та же проблема со мной в php версии 8.0.3 в Windows: решение заключалось в том, что мне пришлось раскомментировать и установить openssl.capath = путь сертификатов в файле php.ini.

Я уже установил openssl.cafile, поэтому он не выдавал ошибку, но oepnssl.capath не был установлен, поэтому была ошибка.

openssl.cafile=C:\Users\Akta\Softwares\php-8.0.3-nts-Win32-vs16-x64\extras\ssl\demoCA\cacert.pem

openssl.capath=C:\Users\Akta\Softwares\php-8.0.3-nts-Win32-vs16-x64\extras\ssl\demoCA\certs

person Akta Kalariya    schedule 16.03.2021

Я прочитал каждую ветку, которую смог найти, и эта предоставила недостающую часть.

Предыстория: я столкнулся с этой проблемой при попытке заставить Drupal 8 проверять наличие доступных обновлений в свежей среде разработки (на основе wamp).

  1. Получите копию данных сертификата в Mozilla, ее можно найти здесь: https://curl.haxx.se/ca/cacert.pem Если вы хотите узнать больше об этом, прочитайте это: https://serverfault.com/questions/241046/что-есть-cacert-pem-и-для-чего-использовать-это
  2. Сохраните файл как "cacert.pem.txt", а не как "cacert.pem" Этого недостающего фрагмента, спасибо LyleK! Я понятия не имею, почему, но у вас должно быть расширение .txt в конце, иначе это не сработает.
  3. Явно добавьте путь к местоположению файла "cacert.pem.txt" в ваш php.ini

Пример:

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "C:\wamp\custom\cacert.pem.txt"

Если вы используете стек wamp, перезапустите его. Все должно быть хорошо.

person ryugold    schedule 08.02.2016

Во-первых, вам нужно загрузить файл «curl.cainfo», а затем найти его в папке C:\xampp\php\cacert.pem.txt.

Во-вторых, вам нужно открыть файл php.ini в Xampp и скопировать этот =>

curl.cainfo = C:\xampp\php\cacert.pem.txt в любом месте.

В-третьих, перезапустите сервер Apache, обновите страницу локального хоста, и это должно работать нормально.

person Atdhe Kurteshi    schedule 06.08.2016

Если кто-то использует Windows с Plesk и получает эту ошибку.

Вы должны убедиться, что путь curl.cainfo находится внутри каталога Plesk PHP, иначе вы получите указанную выше ошибку даже с исправлением.

curl.cainfo = "C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP55\extras\ssl\cacert.pem.txt"

Исправлено для меня. Надеюсь, это поможет кому-то, когда-нибудь, где-нибудь.

person Matthew Flynn    schedule 19.05.2017
comment
И если вы используете Plesk на общем хосте без доступа к каталогу PHP, вы можете установить параметр curl CURLOPT_CAINFO только непосредственно перед каждым использованием. - person Jérémie Bertrand; 27.02.2018

Я пробовал решения @mahesh-singh-chouhan, @omarsafwany, @LyleK. но постоянно получаю ту же ошибку.

После этого я обновляю файл php.ini без двойных кавычек и с расширением .pem, и мне удается получить желаемый результат с помощью кода ниже.

curl.cainfo=E:\Xampp-5.6.3\php\ext\cacert.pem

Я также прикрепил Скриншот.

Пожалуйста, сначала попробуйте приведенные выше предложения пользователей, если не удалось, также используйте это.

Спасибо за решения. Это создает для меня путь @mahesh-singh-chouhan, @omarsafwany, @LyleK

введите здесь описание изображения

person Abdul Rehman    schedule 18.10.2017

В вашем файле php.ini вы также должны обновить

;openssl.cafile 

с той же ссылкой cacert.pem, которую вы использовали при обновлении

;curl.cainfo

Посмотрите на меня до и после

;curl.cainfo =

;openssl.cafile=

to

curl.cainfo ="C:\php-7.4.11\extras\ssl\cacert.pem"

openssl.cafile="C:\php-7.4.11\extras\ssl\cacert.pem"

curl.cainfo =C:\php-7.4.11\extras\ssl\cacert.pem исправляет ошибку cURL 60, а openssl.cafile=C:\php-7.4.11\extras\ssl\cacert.pem исправляет cURL 77 ошибка.

Повеселись!

NB: не забудьте перезагрузить сервер, прежде чем попробовать его.

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

php -i | grep 'Configuration File'
person Maximillian Raphaels    schedule 05.02.2021

У меня была такая же проблема, и я пробовал каждое решение, упомянутое здесь и в других сообщениях, но ни одно из них не сработало. Я пытался
1) установить правильные права на файл (не помогло)
2) изменить расширение файла (не помогло)


затем я переместил файл cacert.pem в каталог php/ в xampp и перезапустил его, это сработало. Надеюсь, это поможет кому-то.

person Abdul Mannan    schedule 12.05.2016

это сработало для меня

curl.cainfo = "C:\xampp\php\cacert.pem.txt"

надеюсь, это поможет кому-то :)

person Herman Demsong    schedule 27.08.2016
comment
Если этот код отвечает на вопрос, рассмотрите возможность добавления текста, поясняющего код в вашем ответе. Таким образом, у вас гораздо больше шансов получить больше голосов и помочь спрашивающему узнать что-то новое. - person lmo; 27.08.2016

Кажется, вы забыли добавить кавычки для пути к файлу. У меня была такая же ошибка (77), потому что я забыл добавить кавычки. Я решил проблему, добавив это. пример: "C:\AppServ\php\cacert.pem"

person JoshGunz    schedule 04.12.2018

у меня была такая проблема в виндовс 2012

у меня был виртуальный выделенный сервер, на котором размещался laravel

тогда у меня была эта ошибка и

  • загрузите этот файл с здесь
  • поместите в мою папку extras в php 7.2
  • в моем файле php.ini найдите эту строку

    [завиток]

    ; Значение по умолчанию для параметра CURLOPT_CAINFO. Это необходимо, чтобы быть

    ; абсолютный путь. curl.cainfo = дополнительные файлы/ssl/cacert.pem

  • я вставляю свой загружаемый файл в файл php sth следующим образом:

curl.cainfo = "C:\Program Files (x86)\PHP\v7.2\extras\ssl\cacert.pem" cacert error rest api call curl php

  • затем сохраните php.ini
  • затем перезапустите мой iis или просто веб-сайт

перезапустите iis windows 2012 cacert 77 ошибка laravel php

в моем случае я просто перезапускаю свой сайт

person saber tabatabaee yazdi    schedule 24.09.2019

Для решения этой ошибки используйте этот код:

 $client = new Client(['verify' => false ]);

И используйте этот $client в своем коде следующим образом:

   $headers = [
            'Authorization' => 'Bearer ' . $token,
            'Accept' => 'application/json',
            RequestOptions::BODY => ' any code for your body ',
        ];

        $response = $client->request('POST', 'bar', [
            'headers' => $headers
        ]);

        $response = $response->getBody()->getContents();

        return $response;
person Mehdi Shi    schedule 18.09.2020

У меня такая же проблема. вам нужно открыть файл .pem или pem.txt с помощью простого редактора (bloc-note) и вставить (https://curl.haxx.se/ca/cacert.pem) в вашем файле. вам нужно перезагрузить апач.

person Marouane Mazouz    schedule 14.04.2017

вы невнимательно читали ошибку, теперь читайте внимательно

cURL-ошибка 77: ошибка настройки сертификата для проверки местоположения: CAfile: D:\XAMPP\apache\bin\curl-ca-bundle.crt CApath: нет (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)

это означает, что вам не хватает файла с именем curl-ca-bundle.crt для проверки расположения сертификатов, поэтому вам просто нужно поместить этот файл (curl-ca-bundle.crt) в папку XAMPP\apache\bin\ и все в порядке ошибка 77 ушла.

curl-ca-bundle.crt, скачать файл можно по этой ссылке https://github.com/nirmalkumar98/nk

person Nirmal Jangir    schedule 17.03.2019

Если это связано с git:

git config --global http.sslverify "false"

решит проблему.

person Lokesh Tiwari    schedule 25.02.2016
comment
Проголосовал против этого ответа, отключение SSL никогда не является хорошим решением. - person Phillip; 19.10.2016
comment
SSL не отключается, только проверка сертификата. Но все же это не лучшее решение! - person Bob Van de Vijver; 09.08.2019