(Этот вопрос изначально назывался «Почему в этом сценарии происходит сбой curl_exec ()?» Но, добавив в сценарий вызовы curl_errno()
и curl_error()
, я обнаружил, что проблема заключалась в сертификате, и ясоответственно отредактировал вопрос.)
Следующий скрипт:
<?php
$sDataFile = '<path>\journal-issue-ToC.htm';
$sURL = 'https://onlinelibrary.wiley.com/toc/14678624/2014/85/1';
$bHeader = false;
$cURLhandle = curl_init();
$FilePointer = fopen($sDataFile, 'wb');
curl_setopt($cURLhandle, CURLOPT_URL, $sURL);
curl_setopt($cURLhandle, CURLOPT_FILE, $FilePointer);
curl_setopt($cURLhandle, CURLOPT_HEADER, $bHeader);
$bResult = curl_exec($cURLhandle);
echo('<br>' . ($bResult === false ? 'Failed to execute' : 'Executed') . ' cURL.');
if(! $bResult) echo('<br>Error #' . curl_errno($cURLhandle) . ': ' . curl_error($cURLhandle));
curl_close($cURLhandle);
fclose($FilePointer);
сохраняет пустой файл "journal-issue-ToC.htm" и генерирует следующий вывод браузера:
Failed to execute cURL.
Error #60: SSL certificate problem: unable to get local issuer certificate
Похоже, что cURL сталкивается с проблемой сертификата, которая не возникает, когда я получаю доступ к запрошенному URL в браузере.Что мне нужно знать о сертификатах, чтобы этот скрипт работал?
Я использую PHP 7.2.2 на IIS 7.5 под 64-битной Windows 7.