在开发我的网站时,我启用了错误报告。但每次生成错误时,都会在开始标记之前在页面顶部生成错误。这有时会破坏文档并改变网站的许多方面,例如性能和元素的显示方式。
有没有办法收集所有错误并在页面底部全部显示?
谢谢堆!
答案 0 :(得分:2)
例如,您可以创建自己的错误处理程序并将所有错误收集到文件中。或者进入数组,然后按照您的要求显示页面底部的所有错误。
以下是它应该如何:
<?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 />";
}
}
?>
答案 1 :(得分:0)
我不知道将它们全部放在页面底部,但您可以做的是将所有错误消息发送到这样的错误文件:
error_reporting(E_ALL);
ini_set('display_errors', 'off');
ini_set('log_errors', 'on');
ini_set('error_log', 'path/to/error/file.log');
此外,在进行编码和测试时,您可以在IDE中保持文件打开状态,并在每次测试后检查它是否有任何新错误。