file_get_contents () каждый раз получает 403 от api.github.com

Я называю себя опытным разработчиком PHP, но это сводит меня с ума. Я пытаюсь получить информацию о выпуске репозитория для отображения предупреждений об обновлении, но я продолжаю возвращать 403 ошибки. Для упрощения я использовал самое простое использование GitHubs API: GET https://api.github.com/zen. Это своего рода привет мир.

Это работает

  • прямо в браузере
  • с равниной curl https://api.github.com/zen в терминале
  • с PHP-Github-API-Class, как PHP-GitHub-апи

Это работает не

  • с простым file_get_contents()из PHP-скрипта

Это весь мой упрощенный код:

<?php
$content = file_get_contents("https://api.github.com/zen");
var_dump($content);
?>

Браузер показывает Warning: file_get_contents(https://api.github.com/zen): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbiddenпеременная $content является логическим и false,

Я предполагаю, что пропускаю какие-то поля http-header-заголовка, но я не могу найти эту информацию в API-Docs, ни использует мой терминал curl-звоните любые специальные заголовочные файлы и работает.

8

Решение

Это происходит потому, что GitHub требует, чтобы вы отправили заголовок UserAgent. Это не должно быть чем-то конкретным. Это будет делать:

$opts = [
'http' => [
'method' => 'GET',
'header' => [
'User-Agent: PHP'
]
]
];

$context = stream_context_create($opts);
$content = file_get_contents("https://api.github.com/zen", false, $context);
var_dump($content);

Выход:

string(35) "Approachable is better than simple."
14

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

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

По вопросам рекламы [email protected]