Ich bin auf ein seltsames Problem gestoßen, das ich nicht vollständig verstehe. Mein Webserver über PHP ruft eine PHP API auf. Der Rest api leitet die Anfrage basierend auf dem Verb an die entsprechende Funktion in der photos.php-Datei weiter. GET-, PUT- und DELETE-Anfragen funktionieren alle ordnungsgemäß, die folgende POST-Anfrage gibt jedoch 404 Not Found zurück. Das Problem ist, dass es gut aus dem Browser funktioniert oder wenn ich es von Postman aus anrufe. Die Datei existiert absolut und hat einen entsprechenden Zugriff. Ich habe dieses Problem auch nicht mit anderen POST-Anfragen.PHP file_get_contents gibt 404 Not Found zurück - Ignoriere Fehler
Nach etwa 5 Stunden Kampf mit diesem und dem Lesen von 100 Seiten/Artikeln stieß ich auf einen obskuren Verweis auf die Option stream_context_create von "ignore_errors" => true. In dem Moment, als ich diese Zeile hinzufügte, verschwand der 404 und ich konnte den api-Endpunkt erreichen.
Ich verstehe nicht, wie das möglich ist. Die Datei war entweder da oder es war nicht so der 404 war eine Lüge. Ich möchte Fehler nicht ignorieren, um dies zum Laufen zu bringen. Irgendeine Idee, was hier vor sich geht?
$apiUrl = 'http://localhost/api/v1/user/john/photos';
// Setup http request
$options = ["http" =>
["method" => "POST",
"header" => "Content-Type: application/json",
"ignore_errors" => true,
"content" => $data
]
];
// Call API
$apiResponse = file_get_contents($apiUrl, NULL, stream_context_create($options));
Hier ist der Fehler, den ich erhalten:
<b>Warning</b>: file_get_contents(http://localhost/api/v1/user/john/photos): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
curl Info:
Array
(
[url] => http://localhost/api/v1/user/john/photos
[content_type] => text/html; charset=UTF-8
[http_code] => 404
[header_size] => 214
[request_size] => 147
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.015
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 229
[speed_download] => 15266
[speed_upload] => 0
[download_content_length] => 229
[upload_content_length] => -1
[starttransfer_time] => 0.015
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 127.0.0.1
[certinfo] => Array
(
)
[primary_port] => 80
[local_ip] => 127.0.0.1
[local_port] => 53224
)
Header Info: HTTP/1.1 404 Not Found
Date: Fri, 28 Oct 2016 15:14:23 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/5.6.21
Content-Length: 229
Connection: close
Content-Type: text/html; charset=UTF-8
Sind Sie sicher, dass die URL gültig ist und es nicht Ihr Browser ist der, der es repariert, z. B. einen Schrägstrich oder etwas hinzufügen? –
Welche Version von PHP haben Sie auf welchem System Windows/Linux verwendet? – sebkrueger
das ist wirklich seltsam, ist nicht die ignore_error-Flag verwendet, um die file_get_contents keine Warnungen über den HTTP-Aufruf zu werfen? Die Warnung war die 404 Nachricht? – Pievis