Код: Выделить всё
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://awebsite.com",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_SSL_OPTIONS => CURLSSLOPT_NATIVE_CA,
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
Версия PHP — 8.3.12 и версия расширения Curl – 8.7.0.
Расширение php_openssl.dll включено в php.ini.
Определен 'CURLSSLOPT_NATIVE_CA': я проверил это с помощью функции php 'defined'
Если я приму альтернативное решение, установив в файле php.ini файл curl.cainfo в файл cacert.pem, загруженный из проекта Curl (в этом случае CURLOPT_SSL_OPTIONS не установлен), я я могу получить доступ к URL-адресу.
Я бы использовал опцию CURLSSLOPT_NATIVE_CA, но кажется, что этот параметр либо игнорируется, либо php/curl не может получить доступ к корневым сертификатам системы, определенным в Windows Serves.Может быть, не хватает каких-то настроек в среде Windows и/или PHP?
Иначе, чем еще исправить эту беду?
Подробнее здесь: https://stackoverflow.com/questions/790 ... et-local-i
Мобильная версия