Antwort an „Felix Riesterer“ verfassen

Lieber tk,

Steht da eine http(s)-URL?

das ist sogar egal.

musst hier mit Dateipfaden arbeiten.

Das liegt daran, dass file_exists() einen Wrapper benötigt, der stat() unterstützt. Und wenn man dann den Links zu den Wrappern folgt, findet man auf der Seite zum HTTP-Protokoll, dass der eben keine Unterstützung für stat() hat.

Oder lese ich das Handbuch hier falsch?

Wenn man nur die Existenz einer Resource unter einer bestimmten URL testen will, habe ich auf Stackoverflow diese Antwort hier gefunden, die mit der PHP-Funktion get_headers() darauf prüft, ob der HTTP-Response-Code eine 200 ist, was ja bekanntlich „OK“ bedeutet. Damit nun aber nicht die ganze Datei über einen regulären GET-Request geladen wird, sondern mit einem HEAD-Request nur die Header-Daten gelesen werden, bietet das Handbuch für get_headers() ein Example #2 an, wo der relevante Teil das hier ist:

$context = stream_context_create([
  'http' => ['method' => 'HEAD']
]);

$headers = get_headers('http://example.com', false, $context);

Es bleibt dann nur noch zu prüfen, ob im ersten Array-Element (mit dem Schlüssel 0) von $headers eine 200 und/oder ein „OK“ steht.

Liebe Grüße

Felix Riesterer

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen