Как исправить ошибку PHP: невозможно получить сертификат локального эмитента?

Это моя настройка среды:

Mac OS Sierra (10.12.2)
XAMPP 5.6.23
PHP 5.6.23

Я использую версию PHP, которая включена в XAMPP:

$ which php
/Applications/XAMPP/bin/php
$ php -v
PHP 5.6.23 (cli) (built: Jun 24 2016 09:25:00)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Это мой код PHP:

  $postData = array('FORM_DATA' => 'data');
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://testhub.banregio.com/adq',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_FOLLOWLOCATION => true
));

$response = curl_exec($curl);
$err = curl_error($curl);
echo $response;
echo $err;
curl_close($curl);

Я уже добавил следующую строку в php.ini файл и, конечно же, скачал cacert.pem файл из https://curl.haxx.se/ca/cacert.pem:

curl.cainfo=/Applications/XAMPP/xamppfiles/etc/cacert.pem

Мой файл php.ini находится в:

$ php --ini
Configuration File (php.ini) Path: /Applications/XAMPP/xamppfiles/etc
Loaded Configuration File:         /Applications/XAMPP/xamppfiles/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Не сработало Я не могу установить CURLOPT_SSL_VERIFYPEER в false,

Далее я добавил эти параметры для cURL в приведенном выше коде:

CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => '/path/to/my/exported/certificate.crt'

На сайте есть следующий сертификат:

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

Конечно, мне пришлось экспортировать его из Брелок Доступ:

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

Брелок Доступ может экспортировать *.pem а также *.cer сертификаты. Я попробовал с обоими. На самом деле, я переименовал *.cer сертификат для *.crt,

Тоже не сработало.

0

Решение

На локальном компьютере вы можете просто отключить SSL (пожалуйста, не пытайтесь сделать это на производственных серверах.)

curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector