Webサイトの開発中に、エラー報告を有効にしました。ただし、エラーが生成されるたびに、ページの上部、開始タグの前にエラーが生成されます。これにより、ドキュメントが破損することがあり、パフォーマンスや要素の表示方法など、Webサイトの多くの側面が変更されます。
すべてのエラーを収集してページの下部に表示する方法はありますか?
ヒープに感謝します!
Webサイトの開発中に、エラー報告を有効にしました。ただし、エラーが生成されるたびに、ページの上部、開始タグの前にエラーが生成されます。これにより、ドキュメントが破損することがあり、パフォーマンスや要素の表示方法など、Webサイトの多くの側面が変更されます。
すべてのエラーを収集してページの下部に表示する方法はありますか?
ヒープに感謝します!
たとえば、独自のエラーハンドラを作成し、すべてのエラーをファイルに収集することができます。または、配列に入力して、要求に応じてページの下部にすべてのエラーを表示します。
方法は次のとおりです。
<?php
// At the top of your PHP code
class MyError
{
protected static $collected = array();
public static function getCollectedErrors()
{
return self::$collected;
}
protected static function addError($key, $error)
{
if (!isset(self::$collected[$key]))
self::$collected[$key] = array();
self::$collected[$key][] = $error;
}
// CATCHABLE ERRORS
public static function captureNormal( $number, $message, $file, $line )
{
// Insert all in one table
$error = array( 'type' => $number, 'message' => $message, 'file' => $file, 'line' => $line );
// Display content $error variable
self::addError('error', $message . " at " . $file . ':' . $line);
}
public static function captureException( $exception )
{
// Display content $exception variable
self::addError('exception', $exception);
}
// UNCATCHABLE ERRORS
public static function captureShutdown( )
{
$error = error_get_last( );
if( $error ) {
## IF YOU WANT TO CLEAR ALL BUFFER, UNCOMMENT NEXT LINE:
# ob_end_clean( );
// Display content $error variable
self::addError('shutdown', $error);
} else { self::addError('shutdown', '<none>'); return true; }
}
}
set_error_handler( array( 'MyError', 'captureNormal' ) );
set_exception_handler( array( 'MyError', 'captureException' ) );
register_shutdown_function( array( 'MyError', 'captureShutdown' ) );
?>
次に、これを使用して、カテゴリ別にすべてのエラーにアクセスできます。
Error::getCollectedErrors();
UPD:ページの下部にエラーを表示するには、エラーを出力する場所に次のコードを追加します。
<?php
$errors = MyError::getCollectedErrors();
foreach ($errors as $category => $items) {
echo "<strong>" . $category . ":</strong><br />";
foreach ($items as $error) {
echo $error . "<br />";
}
}
?>
それらすべてをページの下部に配置することについてはわかりませんが、できることは、すべてのエラーメッセージを次のようなエラーファイルに送信することです。
error_reporting(E_ALL);
ini_set('display_errors', 'off');
ini_set('log_errors', 'on');
ini_set('error_log', 'path/to/error/file.log');
また、コーディングとテストを行っている間、IDEでファイルを開いたままにして、各テストの後に新しいエラーが発生したかどうかを確認できます。