Prüfen ob eine externe Datei existiert oder leer ist.
Tobi
- php
Hallo,
ich will einen Link (mit PHP 4.3.x) auf meiner Webseite einfügen, der nur dann erscheint, wenn die verlinkte Datei vorhanden ist bzw. auch einen Inhalt hat.
Warum funktioniert dies nicht?
$url = "http://www.einedomain.de/datei.txt";
$dateiinhalt = "";
$vorhandenedatei = fopen ("$url", "r");
$dateiinhalt = fgets($vorhandenedatei,8); //andere Möglichkeit?
if (!$vorhandenedatei) {
print "<p>Die Datei "".$url."" konnte nicht geöffnet werden.</p>\n";
}
else {
print "Die Datei "".$url."" ist vorhanden.</p>\n";
}
# funktioniert nicht:
if ($dateiinhalt > 0) {
echo "Datei mit Inhalt.<br />\n";
}
else {
echo "Datei ist leer.<br />\n";
}
fclose($vorhandenedatei);
MfG.
Tobi
Hi,
Warum funktioniert dies nicht?
weil hinter eine HTTP-URL keine Datei sitzt, sondern eine Ressource. Es existiert kein Grund anzunehmen, eine _file_open-Funktion würde diesbezüglich sinnvolle Ergebnisse erzielen. Für alles weitere reicht Deine Fehlerbeschreibung nicht aus; "funktioniert nicht" ist keine solche.
Cheatah
Hello,
weil hinter eine HTTP-URL keine Datei sitzt, sondern eine Ressource. Es existiert kein Grund anzunehmen, eine _file_open-Funktion würde diesbezüglich sinnvolle Ergebnisse erzielen. Für alles weitere reicht Deine Fehlerbeschreibung nicht aus; "funktioniert nicht" ist keine solche.
Diese Antwort halte ich für sehr abgehoben.
PHP ist eine mächtige Sprache und stellt auch Wrapper (Hüllfunktionen) für durchaus komplexe Zugriffsnethoden zur Verfügung. Es wäre daher auch denkbar, dass über eine solche "Wrapper-Function" auch das Vorhandensein eines "Inhalts" einer entfernten "Ressource" geprüft werden könnte.
Deine Antwort kann sich daher nur auf den Status Quo beziehen, der aber weder logisch noch menschlich nachvollziehbar sein muss.
Ich würde mir wünschen, dass auch Du dich manchmal selber hinterfragtest.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
weil hinter eine HTTP-URL keine Datei sitzt, sondern eine Ressource. Es existiert kein Grund anzunehmen, eine _file_open-Funktion würde diesbezüglich sinnvolle Ergebnisse erzielen. Für alles weitere reicht Deine Fehlerbeschreibung nicht aus; "funktioniert nicht" ist keine solche.
Hallo,
leider kann ich als "PHP-Anfänger" mit Deiner Antwort nicht viel anfangen... :-(
[code lang=php]
...
if ($dateiinhalt > 0) {
echo "Datei mit Inhalt.<br />\n";
}
else {
echo "Datei ist leer.<br />\n";
...
[code]
PHP zeigt mir immer "Datei ist leer." an.
Dabei soll PHP nur feststellen, ob in der Datei ein Inhalt vorhanden ist oder nicht.
MfG.
Tobi
Hi,
ich jetzt folgende Lösung gefunden:
if (strlen($dateiinhalt) > 0) {
# mach was ...
}
MfG.
Tobi
Hi,
versuche es mit folgenden Funktionen:
file_exists()
filesize()
MfG Hopsel
Moin Hopsel,
schlechter Rat, ich hatte es dieser Tage erst gepostet:
Anmerkung: Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss
regds
Mike©
Hi,
Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss
was sind "entfernte Dateien"? Wenn ich auf eine Datei zugreife, kann ich doch davon ausgehen, solange sie existiert, dass das Dateisystem des Servers ebenfalls Zugriff hat, oder?
Welche Funktion würdest du empfehlen?
MfG Hopsel
Moin Hopsel,
was sind "entfernte Dateien"? Wenn ich auf eine Datei zugreife, kann ich doch davon ausgehen, solange sie existiert, dass das Dateisystem des Servers ebenfalls Zugriff hat, oder?
das sind Dateien welche nicht auf dem gleichen Server liegen wie das PHP Script.
Welche Funktion würdest du empfehlen?
Ich würde es mit fopen() versuchen.
regds
Mike©
Hallo!
Danke für die Hilfe, jedoch funktioniert dies -wie von Mike beschrieben- nicht mit externen Dateien.
MfG.
Tobi
Hallo,
wenn die externe Datei nicht existiert bekomme ich diese Fehlermeldungen:
Warning: fopen(): HTTP request failed! HTTP/1.1 404 in ...
Warning: fopen(http://...): failed to open stream: No error in ....php on line ...
Warning: fgets(): supplied argument is not a valid stream resource in ....php on line ...
mit einem @ kann ich die Meldungen unterdrücken...
Wie kann ich dieses Problem besserer lösen?
MfG.
Tobi
Moin Tobi,
wenn die externe Datei nicht existiert bekomme ich diese Fehlermeldungen:
Warning: fopen(): HTTP request failed! HTTP/1.1 404 in ...
Warning: fopen(http://...): failed to open stream: No error in ....php on line ...
Warning: fgets(): supplied argument is not a valid stream resource in ....php on line ...
du kannst prüfen ob ein gültiges Dateihandel erstellt werden konnte.
$pointer=@fopen($Request_URL,"r");
if ( $pointer )
# Tu was
else
# das wir nix
regds
Mike©