dedlfix: Prüfen. ob URL vorhanden - Problem

Beitrag lesen

Hi!

Ganz einfach, das ist eine URL und keine Datei.

So einfach ist es nun auch wieder nicht. Du vergisst die "Einfachheit" PHPs, das für Funktionen, die eigentlich für das Dateisystem vorgesehen sind, ein paar Wrapper zur Verfügung stellt, die im Hintergrund die für die angefragte Ressource passende Aktion vornehmen - wenn der Wrapper das unterstützt. Und da liegt der Hase im Pfeffer begraben. Für file_exists() wird das Attribut "Supports stat()" benötigt. Beim http-Wrapper steht jedoch ein "No". Das hätte nicht unbedingt so sein müssen, denn PHP könnte ja einen HEAD-Request auf die Ressource absenden und true bei 200, anderenfalls false liefern. Möglicherweise hat man das jedoch gelassen, weil der Server ja bei HEAD ein anderes Ergebnis als bei GET senden könnte, was zu Verwirrung führen könnte.

Apropos HEAD. Wenn man mal annimmt, dass HEAD erwartungsgemäß funktioniert, kann man ja mit etwas mehr Aufwand einen HEAD-Request senden. Dazu kann man file_get_contents() nehmen (ja, auch wieder eine File-Funktion). Dem übergibt man eine vorher erstellte Context-Ressource im dritten Parameter, bei der nur für http die Option method mit HEAD befüllt wird. Wie das mit dem Context geht, bekommt man im Handbuch erklärt, wenn man den passenden Links folgt.

file_get_contents() liefert nun zwei mögliche Ergebnisse, eins im Gut-Fall, eins im Schlecht-Fall. Die probiert man beide und schaut sich jeweils mit var_dump() an, was geliefert wird. Außerdem gibt es noch die vordefinierte Variable $http_response_header, die man nach einer solchen Operation abfragen kann, um sich die HTTP-Header der Response anzuschauen. Das macht sich gut beim Debugging.

Lo!