PHPファイルをインクルード/リクエストしようとしたときにカスタムエラーを出力する方法は?
これは私の考えでした:
<?php
try{
include "template/".$_GET['view'].".php";
}
catch (Exception $e){
echo 'some error code';
};
?>
しかし、必要なファイルが存在しない場合でも、デフォルトのエラーが発生します。
コメントを変更して回答する価値があると判断しました。
file_exists()
ファイルが存在するかどうかを確認するために使用します。
含まれている場合は含め、そうでない場合はカスタム エラー メッセージをエコーします。
file_exists()
含める前にファイルが存在するかどうかを確認するために使用します。そうすれば、エラーを処理できます。
<?php
if(file_exists('asd.php')){
include "asd.php";
}else{
echo "Oh no! The file doesn't exist!";
}
?>
インクルード エラーは try/catch ではキャッチされませんが、インクルード スクリプト内のエラーは正しくキャッチされると思います。より良い解決策は、file-exists 関数を使用することです。例については、次の投稿を参照してください: PHP のオプションのインクルード
ファイルの存在について独自の検証を実行したら、実行中のコードを try catch でラップして、そのコードのエラーを確実にキャッチできます。
ただの使用はお勧めしませんfile_exist
。訪問者がファイルシステム上のファイルにアクセスできないようにするため、ホワイトリストをお勧めします。ファイル名がホワイトリストにある場合にのみ、それを表示/含めます。
if ((include "template/".$_GET['view'].".php") != 'OK') {
echo "My custom error message";
}