CURL иногда может быть сложным.
Когда я сталкиваюсь с проблемами с CURL, я сначала пытаюсь сделать то же самое в командной строке, в этом случае это сработало отлично, поэтому мы можем отклонить любую проблему с APIили на CURL, поэтому мы должны предположить, что проблема связана с вызовом php.
Когда вы получаете NULL, вероятно, есть ошибка, установленная в обработчике curl, вам просто нужно найти ее и вывести на экран:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://api.deepcrawl.com/accounts/00000/projects/195334/crawls/1306396/reports/thin_pages_basic");
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Auth-Token:Private'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output2 = curl_exec ($ch);
if (curl_errno($ch)) {
print curl_error($ch);
die();
// or whatever you might want to do with this error
}
curl_close ($ch);
$results = json_decode($server_output2);
В этом случае ошибка была:
Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента
Здесь вы можете увидеть, как решить эту проблему, просто нужно добавить действительный сертификат CA в ваш php.ini (в примере используется cacert), например:
1) Загрузите последнюю версию cacert.pem from https://curl.haxx.se/ca/cacert.pem
2) Добавьте следующую строку в php.ini (если это общий хостинг, и у вас нет доступа к php.ini, вы можете добавить его в .user.ini в public_html.)
curl.cainfo = "/ path / to / download / cacert.pem"