2010-11-30 11 views
2

Hat jemand eine Idee, warum funktioniert das folgende nicht?php merkwürdig file_exists bug

$file = 'images/thumbs/1%20-%20Copy.jpg'; 
if(!file_exists($file)){ 
die('NOT THERE'); 
} 

echo 'Yes its there.'; 

Das Problem ist mit den Räumen. Ich habe überprüft, die Datei existiert, dbl geprüft n dreifach überprüft im Gange Nüsse. :(

Hilfe

+0

btw Ich habe die Groß-/Kleinschreibung überprüft aswell – Val

+0

Dies ist ein relativer Pfad, was bedeutet, dass er gegen das aktuelle Arbeitsverzeichnis ('getcwd()') aufgelöst wird. Haben Sie auch den absoluten Pfad überprüft ('realpath()')? – KingCrunch

Antwort

6

file_exists Arbeiten auf dem Dateisystem und nicht über HTTP So %20 nicht als Raum erkannt werden, sondern buchstäblich als %20; Nutzung Leerzeichen statt.

$file = 'images/thumbs/1 - Copy.jpg'; 
+0

... und der Vollständigkeit halber: die URL für eine Datei mit '% 20' auf ihrem Namen sollte 'images% 2Fthumbs% 2F1% 2520-% 2520Copy.jpg' sein ;-) –

+1

@ Álvaro G. Vicario : Es wäre eher 'images/thumbs/1% 2520-% 2520Copy.jpg'. – Gumbo

+0

Yep, sorry, ich habe versehentlich die Schrägstriche codiert <:-) –

0
$file = rawurldecode('images/thumbs/1%20-%20Copy.jpg');