2011-11-04 13 views
11

ファイルをインクルードしようとしていますが、ファイルが存在しない、または開くことができない場合はキャッチします。私は単純なtry/catchステートメントがうまくいくと思っていただろうが、PHPはそれを完全に無視してエラーを出しているようだ。PHPが失敗したインクルードをキャッチ

アイデア?私はstackoverflow上でこのような他の質問があることを知っている、私はそれらを見たが、それらのどれも、適切な、働く答えを持っているようです。

答えて

23

あなたはの戻り値を、それが失敗したかどうかを確認するために含んで確認できます。

if((@include $filename) === false) 
{ 
    // handle error 
} 

をあなたは、私が表示されてからの標準エラーメッセージを非表示にするには、エラー抑制演算子(@)を含ん注意しましょう。

+2

は、私は、@を使用してエラーを処理した場合、エラー制御演算子は、完全に罰金だと思う非常に汚いソリューション – Nicolas

+8

です。このような警告が有効になっている構成では、厄介なインクルードエラーが出力されないことを確認します。 – drew010

+0

うん、これをやりたいのは正確な理由は、エラーを処理することです;) –

4

失敗したときにfalse戻りinclude()ので、ちょうどそれがtrueを返すかどうかを確認してからdie()のような何かをするか、エラーが表示されます。 @を使用して

if (!include('page.php')) 
    die('Error.'); 
+3

'die'に行くなら、[require](http://php.net/ manual/en/function.require.php)です。 –

+0

ええ、良い点。 – Simone

+0

これはまだPHPの警告を示しています。 –

関連する問題