Ich nenne mich selbst ein erfahrener PHP-Entwickler, aber das macht mich verrückt. Ich versuche, Release-Informationen eines Repositorys zu erhalten, um Update-Warnungen anzuzeigen, aber ich gebe immer 403 Fehler zurück. Zur Vereinfachung habe ich die einfachste Verwendung der GitHubs API verwendet: GET https://api.github.com/zen. Es ist eine Art Hallo Welt.file_get_contents() bekommt 403 von api.github.com jedes Mal
Dies funktioniert
- direkt im Browser
- mit einer einfachen
curl https://api.github.com/zen
in einem Terminal - mit einer PHP-Github-API-Klasse wie php-github-api
Das funktioniert nicht
- mit einem einfachen
file_get_contents()
von einem PHP-Skript
Das ist mein ganz vereinfachten Code ist:
<?php
$content = file_get_contents("https://api.github.com/zen");
var_dump($content);
?>
Der Browser zeigt Warning: file_get_contents(https://api.github.com/zen): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
, die Variable $content
ist ein boolean und false
.
Ich denke, ich vermisse eine Art von http-Header-Felder, aber weder kann ich diese Informationen in der API-Docs finden, noch verwendet mein Terminal curl
-call spezielle Header-Dateien und funktioniert.
Haben Sie Hinweise? Danke im Voraus!
Haben Sie versucht, mit [Fiedler] (http://www.telerik.com/fiddler) die verschiedenen Anrufe zu vergleichen? –
Ist 'allow_url_fopen' aktiviert? – Pitchinnate
'allow_url_fopen' ist aktiviert. Danke @RickS für die Tool-Empfehlung, ich werde das in meine zukünftigen Workflows einbeziehen. Die Lösung war ein fehlendes Header-Feld, wie ich vermutete. Siehe markierte Antwort. –