2010-11-30 23 views
2

誰に次のようなことがないのですか?php奇妙なfile_existsバグ

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

echo 'Yes its there.'; 

問題はスペースです。私はファイルが存在していることを確認しました。 :(HTTP経由でのファイルシステムではなく上

ヘルプ

+0

btw大文字と小文字の区別同様に – Val

+0

これは相対パスです。つまり、現在の作業ディレクトリ( 'getcwd()')に対して解決されます。絶対パスもチェックしましたか( 'realpath()')? – KingCrunch

答えて

6

file_exists作品そう%20がスペースとしてではなく、文字通り%20として認識されません。代わりにスペースを使用します。

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

...そして完全を期すために、実際の名前で '%20 'を持つファイルのURLは' images%2Fthumbs%2F1%2520-%2520Copy.jpg'となるはずです。 –

+1

@ÁlvaroG. Vicario :むしろ 'images/thumbs/1%2520-%2520Copy.jpg'となります。 – Gumbo

+0

申し訳ありませんが、私は誤ってスラッシュをエンコードしました<:-) –

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

試してみますこれらの2つ

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