2012-02-02 21 views
0

私はこれをしたい:ファイルがエラーなく存在するかどうかを確認するには?

if (file_exists("path/a/b/c/file.txt")) { 
    fopen("path/a/b/c/file.txt"); ----------> ERROR 
    do_this_if_file_exists(); 

} 
else { 
    do_this_if_not_exists(); 
} 

は残念ながら、私は次のエラーを取得する:

fopen(path/a/b/c/file.txt) [function.fopen]: failed to open stream: No such file or directory 

私はfile_existsと間違ってやっていますか?

さらに、ファイルが存在します:file_exists("file.txt")のようなパスが存在すると、それはうまくいきます。私は問題がパス(パス/ a/b/c /)だと思うが、パスを最初に作成せずにそれを確認する方法。

ありがとうございました。

+1

あなた自身の質問に答えているようですが、正しいパスを使用してください。 –

+0

'file_exists()'に渡すパスの正確な例を表示できますか?あなたはあなたの機能で使用しているのと同じ道を100%確信していますか? –

+0

実際のコードを表示すると、問題が発生しないので、実際のコードを表示したほうがよいでしょう – Seagull

答えて

0

あなたの問題はここにある:

fopen("path/a/b/c/file.txt"); 

だけでなく、あなたは何にも戻り値を割り当てることはありませんが、あなたが使用していない必要な第2引数を取るfopen()

1

エラーを@で隠すのは適切な方法ではありません。すべてのエラーを正しく処理する必要があります。それ以外の場合、デバッグは苦痛になるでしょう。

また、今後is_readable()関数を使用して、ファイルが存在するだけでなく読み込み可能であるかどうかを確認することもできます。十分な権限があります。

1

あなたはfopenでエラーチェックを含める必要があります。

if (file_exists("path/a/b/c/file.txt")) 
{ 
    $fh=fopen("path/a/b/c/file.txt","r"); #or whatever mode you want... 
    if($fh!==false) 
    { 
     do_this_if_file_exists_and_can_be_opened(); 
    } 
    else 
    { 
     die("Couldn't open the file. Sorry!\n"); 
    } 
} 
else { 
    do_this_if_not_exists(); 
} 
-3

あなたのPHPページのトップ

のerror_reporting(0)で、この行を追加することによって、エラー報告をオフにしてもよいです。

if (file_exists("path/a/b/c/file.txt") && is_file("path/a/b/c/file.txt")) { 
    $file_handler = @fopen("path/a/b/c/file.txt", MODE_IS_NOT_OPTIONAL) 
    if($file_handler !== false){ 
     do_things_with_file_handler(); 
    } else { 
     throw_some_error(); 
    } 
} 
else { 
    do_this_if_not_exists(); 
} 

機能file_exists()指定したディレクトリが存在し、そのshluodヘルプあなた場合もチェックできます。指定したファイルが存在し、それが本当にファイルであればあれば

+1

「バッテリーを取り出す前に、男の子、それらの煙探知機は確かに迷惑でした。 –

1

チェック

modeパラメータfopen @ジャックマニーが指摘したように、機能はオプションではありません。可能な値の1つであるfull listのいずれかを使用する必要があります。

関連する問題