Код помилки PHP cURL 60


85

Під час спроби встановити php-середовище у вікнах (за допомогою wamp) для використання Amazon PHP SDK, коли я намагаюся запустити зразок тесту, я отримую таку помилку:

Fatal error: Uncaught exception 'cURL_Exception' with message 'cURL resource: Resource id #10; cURL error: SSL certificate problem: unable to get local issuer certificate (cURL error code 60). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.' in C:\wamp\www\AWSSDKforPHP\lib\requestcore\requestcore.class.php on line 848

Я вже додав наступний рядок до мого php.ini

curl.cainfo = C:\Windows\ca-bundle.crt

в якому знаходиться сертифікат, який я створив за допомогою цього сценарію VBS VBS-Script

Я також перезапустив свою службу WAMP.

Посилання на завивку індексу PHP


6
Якщо вас не хвилює процес сертифікації, ви можете його взагалі відключити curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr

Це вирішило проблему для мене - stackoverflow.com/a/32095378/178163 В основному може бути 2 файли php.ini
Джордж Каган

2
Для тих, хто вперше стикається з цією проблемою, як і я, причиною цього, наскільки я розумію (виправте мене, якщо помиляюся), є те, що на відміну від ситуації з'єднання HTTPS через браузер, запит CURL не отримує сертифікат від сервера. Отже, нам потрібно вручну завантажити сертифікат сайту та додати його до PHP ini. Ця перевірка сертифіката в кінці клієнта є частиною процесу з'єднання HTTPS, і, схоже, її можна обійти. Ось тут і curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);з’являється картина.
Сандіпан Нат

працював оберегом !!!! Дякую!
Родріго Серзеделло

Відповіді:


226

Використовуйте цей комплект кореневих сертифікатів сертифіката:

https://curl.haxx.se/ca/cacert.pem

Скопіюйте цей пакет сертифікатів на свій диск. І використовувати це наphp.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
І якщо це не вирішить проблему? Я встановив curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));і в php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . Файл є, але я все ще отримую повідомлення про помилку 60. Щось мені не вистачає?
Перелив

3
@Overflowh існує два типи php.ini: Один для php-cli, другий для php-web (apache, nginx, ...). Потрібно встановити curl.cainfo = "path_to_cert\cacert.pem"для веб-сайту. З іншого боку, якщо ви можете побачити curl.cainfotrue у своєму інформаційному поданні php, тоді може виникнути проблема з дозволом.
Hüseyin BABAL

Ну, насправді я не бачу curl.cainfoв моїй інформації про php. Чи означає це, що я помістив значення в неправильний файл?
Перелив

1
Так, будь ласка, перевірте розташування вашого файлу php.ini. Це потрібно розмістити у веб-версії
Hüseyin BABAL

Я додав в apache php.ini, але це не спрацювало
kasim badami

31

я виправив це, змінивши php.iniфайл наC:\wamp\bin\apache\apache2.4.9\bin\

curl.cainfo = "C:/wamp/bin/php/php5.5.12/cacert.pem"

спочатку я намагався змінити php.iniфайл на, C:\wamp\bin\php\php5.5.12\і це не спрацювало.

сподіваюся, це допоможе тому, хто шукає право php.iniна модифікацію


1
Дякую. Все, що потрібно було завантажити файл із curl.haxx.se/ca/cacert.pem та встановити шлях до нього у файлі apache php.ini, як ви вже сказали. Будьте уважні, ви можете поставити кацерт куди завгодно, просто переконайтеся, що правильно ввели шлях. Також не забудьте видалити крапку з комою!
Дан Зузевич

1
Не забудьте після цього перезавантажити apache.
hcker2000

17
php --ini

Це точно вкаже, який файл php.ini завантажується, щоб ви знали, який із них змінити. Я витратив багато часу, змінюючи неправильний файл php.ini, оскільки у мене були встановлені WAMP та XAMPP.

Крім того, не забудьте перезапустити сервер WAMP (або все, що ви використовуєте) після зміни php.ini.


1
рятувальник життя! 3 чертові дні усунення несправностей, і це виявляється проблемою
suo

13

@Overflowh Я спробував вищезгадану відповідь також без удачі. Я змінив версію php з 5.3.24 на 5.5.8, оскільки цей параметр працюватиме лише в php 5.3.7 і вище. Потім я знайшов це http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue Я завантажив звідти cacert.pem і замінив той, який завантажив / зробив з curl.hxxx.se зв’язані вище, і все почало працювати. Я намагався отримати PayPal Sandbox IPN для перевірки. Ми раді сказати, що після обміну .pem все нормально, використовуючи параметр curl.cainfo у php.ini, який все ще не був у 5.3.24.


2
Я зіткнувся з такою ж проблемою і вирішив, просто завантаживши вищезгадану форму файлу .pem. Дякую
saqibahmad

4
Ха-ха, я не можу в це повірити! У мене є FLWebsites.biz, і я натрапив на цю публікацію абсолютно не підозрюючи, що мене згадали ... Я написав цей блог!
HTMLGuy

Я намагався з’ясувати проблему, і через 3-4 години нарешті натрапив на цю відповідь. Я сказав, ну ну, чому б не спробувати ще один файл pem ще раз. І сюрприз: нарешті це вдалося. Дякую, що знайшли цей блог :)
Sauleil

Це вирішило мою проблему cacert.pem під Windows 10, IIS. Дякую.
джаку

3
Вибачте, я зняв свій сайт. Перейдіть безпосередньо до джерела: curl.haxx.se/docs/caextract.html
HTMLGuy

8

@ Hüseyin BABAL

Я отримую помилку з вищезазначеним сертифікатом, але я пробую цей сертифікат та його роботу.

https://gist.github.com/VersatilityWerks/5719158/download


ОГО. Це божевілля. Я шукав спосіб встановити cacert.pem глобально і наткнувся на це. Я Є Універсальність Працює ха-ха. Ви використали мій суть.
HTMLGuy

5

По-перше, нам потрібно завантажити цей пакет кореневих сертифікатів сертифіката:

https://curl.haxx.se/ca/cacert.pem

Перемістіть цей файл кудись, наприклад, до папки PHP у папці Wamp / Xampp.

Потім відредагуйте "php.ini":

curl.cainfo = "C: /path/to/your/cacert.pem"

і

openssl.cafile = "C: /path/to/your/cacert.pem"

ВАЖЛИВО:

Переконайтесь, що ви відкрили файл "php.ini" безпосередньо у своєму Провіднику вікон. (у моєму випадку: “C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini”).

Не використовуйте ярлик "php.ini" в меню піктограми Wamp / Xampp в системному треї. Цей ярлик не працював у деяких випадках, з якими я стикався.

Після збереження "php.ini" вам не потрібно "Перезапустити всі служби" в піктограмі Wamp або закрити / повторно відкрити CMD.

Спробуйте "var_dump (openssl_get_cert_locations ());" і подивіться на рядок: ["ini_cafile"] => рядок (40) "C: /path/to/your/cacert.pem"

Готово.


Ваша примітка про відкриття файлу php.ini через Explorer насправді спрацювала! І нарешті я зрозумів, що php.ini від піктограми wamp має інший шлях. Дякую!!!
Доктігер

3

Проблема виправлена, завантажте https://curl.haxx.se/ca/cacert.pem і поставте її "десь", і додайте цей рядок у php.ini:

curl.cainfo = "C:/somewhere/cacert.pem"

PS: Я отримав цю помилку, намагаючись встановити модуль на drupal за допомогою xampp.


3

Найпростішим рішенням проблеми є додавання наведеної нижче команди в поле.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Використовуючи це, не потрібно буде додавати будь-який сертифікат або щось інше.


2

Додайте нижче до php.ini [використовуйте '/' замість '\' у шляху] curl.cainfo = "path / cacert.pem"

Перезапустив мій XAMPP. У мене це добре працювало. Дякую



1

Спочатку потрібно завантажити сертифікат за цим посиланням

https://curl.haxx.se/ca/cacert.pem

і помістіть його у місце, де ви хочете, щоб ім'я файлу, який можна завантажити, було: cacert.pem Отже, у моєму випадку я поміщу його під C: \ wamp64 \ bin \ php \ cacert.pem

Потім вам слід вказати розташування файлу php.ini

Наприклад, я використовую php 7, файл php.ini знаходиться за адресою: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Тож отримайте доступ до цього файлу та скасуйте цей рядок; openssl.cafile

також оновіть його так, щоб він виглядав так: openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Нарешті перезапустіть сервер apache і все


1

ВАЖЛИВО : через 4 години робота з laravel 5.7 та php 7. + та запуск / використання php artison подаються на localhost, намагаючись підключитися до поштового пістолета.

ВАЖЛИВО для вирішення проблеми не працюйте з ip http://127.0.0.1:8000 використовуйте localhost або встановлюйте ім'я домену за допомогою хост-файлу

в порядку ,


0

Рішення полягає в редагуванні файлу php.ini, який знаходиться у вашій версії php (для мене це php7.0.10), а не php.ini апашу. Ви знайдете коментований файл, подібний до цього; curl.cainfo Просто змініть цей рядок таким чином curl.cainfo = "C: \ permCertificate \ cacert.pem"

Не забудьте створити каталог "permCertificate" і скопіювати в нього файл "cacert.pem".


Працює для мене в Ampps, дякую
Алехандро Аранда

-1

Щоб ви знали, що у мене вийшло , файл за адресою https://curl.haxx.se/ca/cacert .... не працював, проте файл у папці zip у дописі за адресою ( http: // flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue ) працював у мене без жодних проблем.

Як сказали інші, скопіюйте файл сертифіката в місце на жорсткому диску, оновіть рядок

;curl.cainfo 

у вашому файлі php.ini для читання

curl.cainfo= "path_to_cert\cacert.pem"

Перезапустіть сервер Apache.


Веб-сайт, на який посилається, є спамом.
Рік Кукіела,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.