あなたの目標は、存在しないファイルを含めてエラーメッセージを抑制することです。
これを行う方法は次のとおりです。
$old = ini_set('display_errors', 0); // Do not show errors to client
$fileExists = file_exists($someFile) && is_readable($someFile);
ini_set('display_errors', $old); // Restore old value
if (!$fileExists)
die('Error opening admin page');
include($someFile);
なぜ多くのステップがあるのですか?
file_exists
またis_readable
、特定の条件でエラー メッセージを出力します:safe_mode
またはopen_basedir
制限の問題がある可能性があります (まだ誰もが PHP 5.3 を使用しているわけではありません)。サーバーも実行される可能性がありsuPHP
、ファイルも読み取れなくなります。
なぜ間違っているのですか?
あなたのコンセプト:疑似認証のために隠蔽されたファイルの名前に依存することは、「隠蔽によるセキュリティ」と呼ばれます。たとえば、ブラウザの履歴にアクセスできる人は誰でも URL を知っています。これはあまり安全ではありません...
私の答え: 単純にオフにすることは、ゼロdisplay_errors
に設定するのと同じくらい安全です。error_reporing
例: カスタム エラー ハンドラがインストールされると、これらの設定は両方とも「無視」されます。これらの値を適宜チェックするのは、カスタム エラー ハンドラの役割です。
php.ini
本番環境と開発環境の両方で異なる設定を使用することを検討してください。最初のエラー メッセージは理想的にはまったく表示されませんが、後者のエラー メッセージはすべて表示されます。
よく読んで: