file_exists ist false obwohl Datei da ist
Stephan
- php
Hallo!
Ich erhalte als Rückgabewert false bei der Funktion file_exists() obwohl die Datei definitiv vorhanden ist. Ich sehe die Datei nicht nur im Verzeichnis, sondern kann mir auch mittels fopen() ein Resource auf das File holen (was ja eigentlich bei nicht vorhanden sein in einem Fehler enden müsste).
$dest= "./resized/30102582.jpg";
if(!file_exists($dest)){
echo "File ist angeblich nicht da...der folgende Befehl funktioniert aber";
$handle= fopen($dest,"r");
}
Wie man sieht handelt es sich um eine lokale Datei, daran scheitert die Funktion also nicht. Rechtevergabe kann ich auch ausschliessen.
Ich weiss nicht weiter.
Wäre schön wenn mich einer von dem Schlauch stoßen könnte auf dem ich scheinbar beharrlich stehe.
Danke + Viele Grüße
Stephan
echo $begrüßung;
$dest= "./resized/30102582.jpg";
Wieso sehe ich in letzter Zeit immer wieder solche mit ./ beginnenden Pfadangaben? Wo ist der Vorteil der ./pfad/datei-Schreibweise gegenüber pfad/datei?
if(!file_exists($dest)){
echo "File ist angeblich nicht da...der folgende Befehl funktioniert aber";
$handle= fopen($dest,"r");
Was genau steht nun in $handle drin? Was liefert ein var_dump($handle)?
Hast du die fragliche Datei eben erst angelegt (also irgendwo vor deinem Code-Ausschnitt)? Und fehlt da vielleicht noch ein Schließbefehl?
echo "$verabschiedung $name";
Wieso sehe ich in letzter Zeit immer wieder solche mit ./ beginnenden Pfadangaben? Wo ist der Vorteil der ./pfad/datei-Schreibweise gegenüber pfad/datei?
Weiss nicht...wohl irgendwie Macht der Gewohnheit. Tut aber irgendwie auch nicht wirklich weh, gelle.
Was genau steht nun in $handle drin? Was liefert ein var_dump($handle)?
resource(1) of type (stream)
Hast du die fragliche Datei eben erst angelegt (also irgendwo vor deinem Code-Ausschnitt)? Und fehlt da vielleicht noch ein Schließbefehl?
In der Tat habe ich die Datei erst kurz davor abgelegt. Allerdings durch ein separates Script. Ein fehlender Schließbefehl...weiss grade nicht so genau was gemeint ist. Ich lese ein XMl Dokument aus wo die Namen der img enthalten sind. xml_parser_free($parser) wird da am Ende aufgerufen. Danach kopiere ich die entsprechenden Dateien auf meinen Server. Was da zu schliessen wäre...ich wüsste nicht was.
Kann das Probleme geben wenn eine Datei grade rst abgelegt wurde?
Gruß
Stephan
echo $begrüßung;
Hast du die fragliche Datei eben erst angelegt (also irgendwo vor deinem Code-Ausschnitt)? Und fehlt da vielleicht noch ein Schließbefehl?
Mit eben erst meinte ich eigentlich im selben Script, so dass Grund zur Annahme bestehen könnte, dass irgend ein Dateizugriff/Systemprozess noch nicht fertig oder noch nicht richtig abgeschlossen ist, ...
In der Tat habe ich die Datei erst kurz davor abgelegt. Allerdings durch ein separates Script. Ein fehlender Schließbefehl...weiss grade nicht so genau was gemeint ist.
... das scheint aber wohl eher nicht der Fall zu sein. Dann fällt mir auch grad nichts weiter ein, außer dass du auf file_exists() verzichten könntest da du im Misserfolgsfall das gleiche Ergebnis auch von fopen() bekommst.
echo "$verabschiedung $name";
Moin!
echo $begrüßung;
$dest= "./resized/30102582.jpg";
Wieso sehe ich in letzter Zeit immer wieder solche mit ./ beginnenden Pfadangaben? Wo ist der Vorteil der ./pfad/datei-Schreibweise gegenüber pfad/datei?
Dann versuche mal, auf der Unix-Shell ein Programm im aktuellen Verzeichnis zu starten, wenn du Root bist.
./programm -> startet Programm im aktuellen Verzeichnis
programm -> sucht im Pfad nach dem Programm, aber nicht im aktuellen Verzeichnis, und findet es nicht.
Ergo: Es gibt einen Unterschied. Die Angabe "./" sagt explizit: "Nimm das aktuelle Verzeichnis, ich meine es ernst".
Bei PHP dürfte es nicht so dramatische Folgen haben, aber auch dort gibt es beispielsweise Pfade, die durchsucht werden, wenn gewisse Dinge passieren, beispielsweise bei include().
- Sven Rautenberg
echo $begrüßung;
$dest= "./resized/30102582.jpg";
Wieso sehe ich in letzter Zeit immer wieder solche mit ./ beginnenden Pfadangaben? Wo ist der Vorteil der ./pfad/datei-Schreibweise gegenüber pfad/datei?
Gut, wenn man unpräzise Fragen stellt (es war eigentlich nur laut gedacht) muss man mit unpräzisen Antworten rechnen :-)
Dann versuche mal, auf der Unix-Shell ein Programm im aktuellen Verzeichnis zu starten, wenn du Root bist.
Da kenne ich das auch, und da ist es sinnvoll. Doch dieser Anwendungsfall war bei meinen Sichtungen nicht vertreten. Ich nahm eher an, irgendeine einflussreiche Institution hätte das vor Kurzem irgendwo propagiert, so dass es nun von vielen (vielleicht war es ja auch nur einer, dafür aber öfter) mit oder ohne Sinn nachgemacht wird.
Ergo: Es gibt einen Unterschied. Die Angabe "./" sagt explizit: "Nimm das aktuelle Verzeichnis, ich meine es ernst".
Bei PHP dürfte es nicht so dramatische Folgen haben, aber auch dort gibt es beispielsweise Pfade, die durchsucht werden, wenn gewisse Dinge passieren, beispielsweise bei include().
Es tauchte häufig bei fopen() auf, welches aber ohne den dritten Parameter (use_include_path) sowieso nur das aktuelle Verzeichnis berücksichtigt, und dieser Parameter war immer nicht angegeben.
echo "$verabschiedung $name";
N'Abend Stefan.
Also, wenn du den safe_mode aktiviert hast, könnte dieser Kommentar aus dem PHP-Handbuch interessant sein.
Ansonsten kannst du ja mal prüfen, ob is_readable funktioniert.
Mit freundliche Grüßen
_Siro