543 lines
19 KiB
Smarty
543 lines
19 KiB
Smarty
<?php
|
|
/** @var array $traces */
|
|
if (!function_exists('parse_padding')) {
|
|
function parse_padding($source)
|
|
{
|
|
$length = strlen(strval(count($source['source']) + $source['first']));
|
|
return 40 + ($length - 1) * 8;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('parse_class')) {
|
|
function parse_class($name)
|
|
{
|
|
$names = explode('\\', $name);
|
|
return '<abbr title="'.$name.'">'.end($names).'</abbr>';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('parse_file')) {
|
|
function parse_file($file, $line)
|
|
{
|
|
return '<a class="toggle" title="'."{$file} line {$line}".'">'.basename($file)." line {$line}".'</a>';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('parse_args')) {
|
|
function parse_args($args)
|
|
{
|
|
$result = [];
|
|
foreach ($args as $key => $item) {
|
|
switch (true) {
|
|
case is_object($item):
|
|
$value = sprintf('<em>object</em>(%s)', parse_class(get_class($item)));
|
|
break;
|
|
case is_array($item):
|
|
if (count($item) > 3) {
|
|
$value = sprintf('[%s, ...]', parse_args(array_slice($item, 0, 3)));
|
|
} else {
|
|
$value = sprintf('[%s]', parse_args($item));
|
|
}
|
|
break;
|
|
case is_string($item):
|
|
if (strlen($item) > 20) {
|
|
$value = sprintf(
|
|
'\'<a class="toggle" title="%s">%s...</a>\'',
|
|
htmlentities($item),
|
|
htmlentities(substr($item, 0, 20))
|
|
);
|
|
} else {
|
|
$value = sprintf("'%s'", htmlentities($item));
|
|
}
|
|
break;
|
|
case is_int($item):
|
|
case is_float($item):
|
|
$value = $item;
|
|
break;
|
|
case is_null($item):
|
|
$value = '<em>null</em>';
|
|
break;
|
|
case is_bool($item):
|
|
$value = '<em>' . ($item ? 'true' : 'false') . '</em>';
|
|
break;
|
|
case is_resource($item):
|
|
$value = '<em>resource</em>';
|
|
break;
|
|
default:
|
|
$value = htmlentities(str_replace("\n", '', var_export(strval($item), true)));
|
|
break;
|
|
}
|
|
|
|
$result[] = is_int($key) ? $value : "'{$key}' => {$value}";
|
|
}
|
|
|
|
return implode(', ', $result);
|
|
}
|
|
}
|
|
if (!function_exists('echo_value')) {
|
|
function echo_value($val)
|
|
{
|
|
if (is_array($val) || is_object($val)) {
|
|
echo htmlentities(json_encode($val, JSON_PRETTY_PRINT));
|
|
} elseif (is_bool($val)) {
|
|
echo $val ? 'true' : 'false';
|
|
} elseif (is_scalar($val)) {
|
|
echo htmlentities($val);
|
|
} else {
|
|
echo 'Resource';
|
|
}
|
|
}
|
|
}
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>系统发生错误</title>
|
|
<meta name="robots" content="noindex,nofollow" />
|
|
<style>
|
|
/* Base */
|
|
body {
|
|
color: #333;
|
|
font: 16px Verdana, "Helvetica Neue", helvetica, Arial, 'Microsoft YaHei', sans-serif;
|
|
margin: 0;
|
|
padding: 0 20px 20px;
|
|
background: #f5f5f5;
|
|
}
|
|
h1{
|
|
margin: 10px 0 0;
|
|
font-size: 28px;
|
|
font-weight: 500;
|
|
line-height: 32px;
|
|
}
|
|
h2{
|
|
color: #4288ce;
|
|
font-weight: 400;
|
|
padding: 6px 0;
|
|
margin: 6px 0 0;
|
|
font-size: 18px;
|
|
border-bottom: 1px solid #eee;
|
|
}
|
|
h3{
|
|
margin: 12px;
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
}
|
|
abbr{
|
|
cursor: help;
|
|
text-decoration: underline;
|
|
text-decoration-style: dotted;
|
|
}
|
|
a{
|
|
color: #868686;
|
|
cursor: pointer;
|
|
}
|
|
a:hover{
|
|
text-decoration: underline;
|
|
}
|
|
.line-error{
|
|
background: #f8cbcb;
|
|
}
|
|
.echo table {
|
|
width: 100%;
|
|
}
|
|
.echo pre {
|
|
padding: 16px;
|
|
overflow: auto;
|
|
font-size: 85%;
|
|
line-height: 1.45;
|
|
background-color: #f7f7f7;
|
|
border: 0;
|
|
border-radius: 3px;
|
|
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
}
|
|
.echo pre > pre {
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
/* Exception Info */
|
|
.exception {
|
|
margin-top: 20px;
|
|
}
|
|
.exception .message{
|
|
padding: 12px;
|
|
border: 1px solid #ddd;
|
|
border-bottom: 0 none;
|
|
line-height: 18px;
|
|
font-size:16px;
|
|
border-top-left-radius: 4px;
|
|
border-top-right-radius: 4px;
|
|
font-family: Consolas,"Liberation Mono",Courier,Verdana,"微软雅黑",serif;
|
|
}
|
|
.exception .error-message {
|
|
text-align: center;
|
|
margin-top: 18%;
|
|
}
|
|
.exception .code{
|
|
float: left;
|
|
text-align: center;
|
|
color: #fff;
|
|
margin-right: 12px;
|
|
padding: 16px;
|
|
border-radius: 4px;
|
|
background: #999;
|
|
}
|
|
.exception .source-code{
|
|
padding: 6px;
|
|
border: 1px solid #ddd;
|
|
background: #f9f9f9;
|
|
overflow-x: auto;
|
|
}
|
|