在开发我的网站时,我启用了错误报告。但是每次生成错误时,它都会在页面顶部的开始标记之前生成。这有时会破坏文档并改变网站的许多方面,例如性能和元素的显示方式。
有什么方法可以收集所有错误并将它们全部显示在页面底部?
多谢!
在开发我的网站时,我启用了错误报告。但是每次生成错误时,它都会在页面顶部的开始标记之前生成。这有时会破坏文档并改变网站的许多方面,例如性能和元素的显示方式。
有什么方法可以收集所有错误并将它们全部显示在页面底部?
多谢!
例如,您可以创建自己的错误处理程序并将所有错误收集到文件中。或者进入数组,然后按照您的要求在页面底部显示所有错误。
应该是这样的:
<?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 中保持文件打开,并在每次测试后检查它以查看是否发生了任何新错误。