Remote Datei Auslesen

ReemE

Mitglied
Hallo an Alle!

Ich habe folgendes Problem. Ich versuche ein Favicon (das kleine Bild, das ihr im Moment vor der URL oben in der Adresszeile sehen solltet.) einer beliebigen Seite auszulesen. Dazu muss ich natürlich checken ob überhaupt eines existiert.

Das habe ich mit dem folgenden Code probiert:

PHP:
$url = "http://www.web.de/favicon.ico";
if( file_exists("$url")) $favicon = true;
else $favicon = false;

da kam dieser Fehler:
Warning: file_exists() [function.file-exists]: Unable to access in /home/www/htdocs/***/favorites/index.php on line 10



Was kann ich daran anders machen, sodass es funktioniert?
Vielen Dank,

ReemE
 
Zuletzt bearbeitet:
Hallo,

deine if Anweisung ist nicht ganz korrekt, dass muss so heißen:
PHP:
$url = "http://www.web.de/favicon.ico"; 
if (file_exists("$url")){
$favicon = true;
} else {
$favicon = false;
}
 
Zuletzt bearbeitet:
Mit fopen geht das ganze schon, aber ich bekomme eine Fehler wenn die Datei nicht existiert:


Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in E:\xampplite\htdocs\favorites\index.php on line 13

Warning: fopen(http://www.***./favicon.ico) [function.fopen]: failed to open stream: No error in E:\xampplite\htdocs\favorites\index.php on line 13


das ist aber nicht Sinn der Sache...
 
Da du sowieso nur wissen möchtest, ob eine entfernte Datei existiert, könntest du Folgendes benutzen:
PHP:
<?php

	$favicon = (bool)$handle = @fopen('http://example.net/favicon.ico', 'r');
	@fclose($handle);

?>
 
Das stimmt. Ich könnte einfach den Fehler unterdrücken.
Is zwar nicht die beste Variante, aber wahrscheinlich die einzige, die im Moment funktioniert.

Vielen Dank, ich werde aber weiter suchen und vielleicht auf eine programmiertechnisch korrektere Methode stoßen. Danke.
 
Manchmal bleibt einem einfach nichts anderes übrig, als zum Fehler-Kontroll-Operatoren zu greifen.
 
Richtig dort gibt es keinen anderen Befehl um eine entfernte Datei auf Existenz zu überprüfen. Die Suche kannst du dir also sparen.
 
Richtig dort gibt es keinen anderen Befehl um eine entfernte Datei auf Existenz zu überprüfen.
Nicht ganz: Denn es wäre auch möglich mithilfe der fsockopen()-Funktion eine HTTP-Anfrage der HEAD-Methode zu senden um anschließend die Rückantwort zu analysieren. Allerdings wäre dazu eine komplette Analyse der HTTP-Header-Felder nötig, da der HTTP-Statuscode allein oft nicht ausreicht. Das würde für diese Zwecke jedoch viel zu umfangreich werden.
 

Neue Beiträge

Zurück