如何创建PHP错误页面?
当PHP中存在错误时,如何生成一个脚本来告诉我错误是什么如何创建PHP错误页面?,php,Php,当PHP中存在错误时,如何生成一个脚本来告诉我错误是什么 我假设我会制作一个500.shtml文档,但我会在其中放入什么呢?一些服务器的默认配置设置不显示PHP错误。您可以使用以下命令覆盖它 error_reporting(E_ALL); ini_set('display_errors', '1'); 在php中,您不需要询问就可以得到警告和错误,只需设置 error_reporting(E_ALL); 您将知道何时发生错误。我最近创建了一个。也许你可以用它 <?php Class
我假设我会制作一个500.shtml文档,但我会在其中放入什么呢?一些服务器的默认配置设置不显示PHP错误。您可以使用以下命令覆盖它
error_reporting(E_ALL);
ini_set('display_errors', '1');
在php中,您不需要询问就可以得到警告和错误,只需设置
error_reporting(E_ALL);
您将知道何时发生错误。我最近创建了一个。也许你可以用它
<?php
Class ErrorHandler
{
private function __construct() { }
public static function SetHandler($errTypes = ERROR_TYPES)
{
return set_error_handler(array('ErrorHandler' , 'Handler'), $errTypes);
}
public static function Handler($errNo, $errStr, $errFile, $errLine)
{
$backtrace = ErrorHandler::GetBacktrace(2);
//Creating error message.
$error_message = "\nErrNo: $errNo\n TEXT: $errStr\n LOCATION: $errFile\n LINE: $errLine at" . date('F j, Y, g:i:a') . " Showing Backtrace: $backtrace". "\n";
if(LOG_ERRORS)
error_log($error_message, 3 , LOG_ERROR_FILE);
if(SEND_ERROR_MAIL == true)
error_log($error_message, 1, ADMIN_ERROR_MAIL, "From: ". SENDMAIL_FROM . "\r\nTo: " . ADMIN_ERROR_MAIL);
if( ($errNo == E_WARNING && IS_WARNING_FATAL ==false) || ($errNo == E_NOTICE || $errNo == E_USER_NOTICE) )
{
if(DEBUGGING)
echo '<div class="error_box"> <b> <pre>' . $error_message. '</pre> </b> </div>';
} else {
if(DEBUGGING)
echo '<div class="error_box"> <b> <pre>' . $error_message. '</pre> </b> </div>';
else
{
echo SITE_GENERIC_FORM_MESSAGE;
/*ob_clean();
include '500.php';
flush();
ob_flush();
ob_end_clean();
exit();*/
}
exit();
}
}
public static function GetBacktrace($irrelevantFirstEntries)
{
$s = '';
$MAXSTRLEN = 64;
$trace_array = debug_backtrace();
for ($i = 0; $i < $irrelevantFirstEntries; $i++)
array_shift($trace_array);
$tabs = sizeof($trace_array) - 1;
foreach($trace_array as $arr)
{
$tabs = $tabs - 1;
if(isset($arr['class']))
$s = $s . $arr['class'] . '.';
$args = array();
if(!empty($arr['agrs']))
foreach($arr['args'] as $v)
{
if(is_null($v))
$args[] = 'null';
elseif (is_array($v))
$args[] = 'Array[' . sizeof($v) . ']';
elseif (is_object($v))
$args[] = 'Object: ' . get_class($v);
elseif (is_bool($v))
$args[] = $v?'true':'false';
else
{
$v = (string)@$v;
$str = htmlspecialchars(substr($v, 0, $MAX STRLEN));
if (strlen($v) > $MAXSTRLEN)
$str = $str . "...";
$args[] = '"'.$str.'"';
}
}
$s = $s . $arr['function'] . '(' . implode(', ', $args). ')';
$line = (isset ($arr['line']) ? $arr['line'] : "unknown");
$file = (isset ($arr['file']) ? $arr['file'] : "unknown");
$s = $s . sprintf(' # line %4d, file: $s', $line, $file);
$s = $s . '\n';
}
return $s;
}
}
?>
触发错误(“我是一个PHP错误页面!”)
并确保“错误报告”处于打开状态。@GordonM这会回显错误吗?我相信他问的问题是如何创建自定义错误页。@EricH否,就像他说的,他想要“一个脚本,当PHP中有错误时,它会告诉我错误是什么?”很明显,他想知道PHP抛出错误时的错误是什么。@DexterHuinda是的,我误读了这个问题。谢谢。我不知道为什么其他人都不明白。。