exception.tpl 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. if(!function_exists('parse_padding')){
  3. function parse_padding($source)
  4. {
  5. $length = strlen(strval(count($source['source']) + $source['first']));
  6. return 40 + ($length - 1) * 8;
  7. }
  8. }
  9. if(!function_exists('parse_class')){
  10. function parse_class($name)
  11. {
  12. $names = explode('\\', $name);
  13. return '<abbr title="'.$name.'">'.end($names).'</abbr>';
  14. }
  15. }
  16. if(!function_exists('parse_file')){
  17. function parse_file($file, $line)
  18. {
  19. return '<a class="toggle" title="'."{$file} line {$line}".'">'.basename($file)." line {$line}".'</a>';
  20. }
  21. }
  22. if(!function_exists('parse_args')){
  23. function parse_args($args)
  24. {
  25. $result = [];
  26. foreach ($args as $key => $item) {
  27. switch (true) {
  28. case is_object($item):
  29. $value = sprintf('<em>object</em>(%s)', parse_class(get_class($item)));
  30. break;
  31. case is_array($item):
  32. if(count($item) > 3){
  33. $value = sprintf('[%s, ...]', parse_args(array_slice($item, 0, 3)));
  34. } else {
  35. $value = sprintf('[%s]', parse_args($item));
  36. }
  37. break;
  38. case is_string($item):
  39. if(strlen($item) > 20){
  40. $value = sprintf(
  41. '\'<a class="toggle" title="%s">%s...</a>\'',
  42. htmlentities($item),
  43. htmlentities(substr($item, 0, 20))
  44. );
  45. } else {
  46. $value = sprintf("'%s'", htmlentities($item));
  47. }
  48. break;
  49. case is_int($item):
  50. case is_float($item):
  51. $value = $item;
  52. break;
  53. case is_null($item):
  54. $value = '<em>null</em>';
  55. break;
  56. case is_bool($item):
  57. $value = '<em>' . ($item ? 'true' : 'false') . '</em>';
  58. break;
  59. case is_resource($item):
  60. $value = '<em>resource</em>';
  61. break;
  62. default:
  63. $value = htmlentities(str_replace("\n", '', var_export(strval($item), true)));
  64. break;
  65. }
  66. $result[] = is_int($key) ? $value : "'{$key}' => {$value}";
  67. }
  68. return implode(', ', $result);
  69. }
  70. }
  71. ?>
  72. <!DOCTYPE html>
  73. <html lang="en">
  74. <head>
  75. <meta charset="UTF-8">
  76. <title>系统发生错误</title>
  77. <style>
  78. body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { margin:0; padding:0; box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box;}
  79. body { background:#fff; color:#555; font-size:14px; font-family: "Microsoft Yahei"; }
  80. a { color:#555; text-decoration:none; }
  81. a:hover { text-decoration:none; }
  82. img { border:none; }
  83. .clearfix:after, .clearfix:before {content: ""; display: block; height:0; clear:both; visibility: hidden;}
  84. .clearfix { *zoom:1; }
  85. .errPage{width:800px;margin:0 auto;}
  86. .errPage .header{margin-top:160px;}
  87. .errPage .header .left{width:290px;height:290px;float:left;}
  88. .errPage .header .left img{width:100%;height:100%;}
  89. .errPage .header .right{width:395px;float:right;margin-top:15px;margin-right: 50px;}
  90. .errPage .header .right .picture{width:228px;height:80px;}
  91. .errPage .header .right .picture img{width:100%;height:100%;}
  92. .errPage .header .right .title{font-size:20px;color:#979DAB;margin-top:26px;height:70px;}
  93. .errPage .header .right .question{margin-top:40px;}
  94. .errPage .header .right .question .btn{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;user-select:none;display:inline-block;*display:inline;zoom:0;width:116px;height:28px;border-radius:18px;background-color:#999;font-size:12px;color:#fff;text-align:center;line-height:28px;cursor:pointer;}
  95. .errPage .header .right .question .btn.on{background-color:#1951FC;}
  96. .errPage .header .right .question .btn img{width:10px;height:6px;margin-left:10px;}
  97. .errPage .conter{width:800px;height:424px;padding:25px 29px;background-color:#F7F7F7;border-radius:18px;overflow:auto;font-size:14px;color:#666666;margin-top:55px;line-height:2.4;display:none;}
  98. .source-code pre {margin: 0;}
  99. .source-code pre li {height: 18px;line-height: 18px;}
  100. .source-code pre ol{margin: 0;color: #4288ce;display: inline-block;min-width: 100%;box-sizing: border-box;font-size:14px;font-family: "Century Gothic",Consolas,"Liberation Mono",Courier,Verdana;padding-left: <?php echo (isset($source) && !empty($source)) ? parse_padding($source) : 40; ?>px;}
  101. .line-error{background: #f8cbcb;}
  102. /* SPAN elements with the classes below are added by prettyprint. */
  103. pre.prettyprint .pln { color: #000 } /* plain text */
  104. pre.prettyprint .str { color: #080 } /* string content */
  105. pre.prettyprint .kwd { color: #008 } /* a keyword */
  106. pre.prettyprint .com { color: #800 } /* a comment */
  107. pre.prettyprint .typ { color: #606 } /* a type name */
  108. pre.prettyprint .lit { color: #066 } /* a literal value */
  109. /* punctuation, lisp open bracket, lisp close bracket */
  110. pre.prettyprint .pun, pre.prettyprint .opn, pre.prettyprint .clo { color: #660 }
  111. pre.prettyprint .tag { color: #008 } /* a markup tag name */
  112. pre.prettyprint .atn { color: #606 } /* a markup attribute name */
  113. pre.prettyprint .atv { color: #080 } /* a markup attribute value */
  114. pre.prettyprint .dec, pre.prettyprint .var { color: #606 } /* a declaration; a variable name */
  115. pre.prettyprint .fun { color: red } /* a function name */
  116. h2 {color: #4288ce;font-weight: 400;padding: 6px 0;margin: 6px 0 0;font-size: 14px;border-bottom: 1px solid #eee;}
  117. abbr {cursor: help;text-decoration: underline;text-decoration-style: dotted;}
  118. h1 {margin: 10px 0 0;font-size: 28px;font-weight: 500;line-height: 32px;}
  119. .source-code::-webkit-scrollbar{width:10px;height:10px;}
  120. .source-code::-webkit-scrollbar-track{border-radius:2px;}
  121. .source-code::-webkit-scrollbar-thumb{background: #bfbfbf;border-radius:10px;}
  122. .source-code::-webkit-scrollbar-thumb:hover{background: #333;}
  123. </style>
  124. </head>
  125. <body>
  126. <div class="errPage">
  127. <div class="header">
  128. <div class="left"><img src="/system/images/logo-big.png"></div>
  129. <div class="right">
  130. <div class="picture"><img src="data:image/png;base64,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"></div>
  131. <div class="title">
  132. <div class="info">
  133. <div>
  134. <h2><?php echo nl2br(htmlentities($message)); ?></h2>
  135. </div>
  136. <div>
  137. <h1 style="font-size: 14px;">[<?php echo $code; ?>]&nbsp;<?php echo isset($name) ? sprintf('%s in %s', parse_class($name), parse_file($file, $line)) : $exception->getMessage(); ?></h1>
  138. </div>
  139. </div>
  140. </div>
  141. <div class="question">
  142. <div class="btn">查看错误代码<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABtElEQVRoQ+2Y3SoFURiGv+dmHHABTt2AM1FSkkRKUlIi2SmpnRJKJElJbWduwCGX4U6Wds3sttkz3/x8a+2xa83hNGvN87zvrFnTIBN+MOH8EgXabjA2EBswJhAfIWOA5uGxAXOExgliA0UBOuemReRYRL6AG2PQhcODNJDA90RkJrnzO7AYQsK7QA58yh1EwquAAh9MwptABfggEl4EFPiOiCwMrQXvEmYBBf4MOAm9JkwCCtw5cJTGHVKisYACdQEcZl+ZoSQaCSgwXeCgZHMb3h/Ma6K2gAJ/CeyXbVa+m6gloNz8Ctgrgw+xJioLKPDXwG5VeN8SlQQU+Ftgpy68T4lSAQX+DthuCu9LQhVQ4O+BLSu8D4lCAQX+EdjwBW+VyBVQ4J+Add/wFokRAQX+GVgLBd9U4o+AAv8CrIaGbyKRFfgWkdkM6CuwMi74ChIPwGZ63UDAOTcnIp8Z0DdgedzwZRLAgDvbwIeIzCcT9ICltuAViQ5wOtJA/4RzbkpE+p8FP0C3bfiMRO4vmtKd+L9IFHFEgbYbig3EBowJxEfIGKB5eGzAHKFxgtiAMUDz8F/6UtIxXjMNGgAAAABJRU5ErkJggg=="></div>
  143. <div class="btn on"><a style="color: #ffffff" href="javascript:history.back(-1)">返回上一页</a></div>
  144. </div>
  145. </div>
  146. </div>
  147. <div class="clearfix"></div>
  148. <div class="conter source-code">
  149. <?php if(!empty($source)){?>
  150. <div class="source-code">
  151. <pre class="prettyprint lang-php"><ol start="<?php echo $source['first']; ?>"><?php foreach ((array) $source['source'] as $key => $value) { ?><li class="line-<?php echo $key + $source['first']; ?>"><code><?php echo htmlentities($value); ?></code></li><?php } ?></ol></pre>
  152. </div>
  153. <?php }?>
  154. </div>
  155. </div>
  156. <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  157. <script>
  158. var LINE =<?php echo isset($line) ? $line : 0; ?>;
  159. var down = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABuElEQVRoQ+2Y4SoEURiGn+8mXIkbcAuKkpKSlFBSkhIpSUmhLUlJbYqUW3ADfvLPVbiAV1uztYY1Z+Z8x1id+bez55x9nvc9u81ZY8QvG3F+skDbDeYGcgORCeQtFBlg9PTcQHSEkQv8vwYk7QJjQMfMXiMDcpsu6Rh4B7pm9tZf+FMDBfxe8eYLMP0XJCTd9VgKrkczmxwmoFJkrUtIugVmSlwTZvbUu1du4AxY/SsSkrrAbInn2czGv22gd1PSPTDVtoSkG2CuiuPbX6G2JSRdA/NV8F+20OCEtiQkXQELIfA/CrSxnSRdAouh8JUCvykh6QJYqgMfJPAbEpI6wHJd+GCBlBKSzoGVJvC1BFJISDoF1prC1xbwlJB0AqzHwDcS8JAoHsw2YuEbC8RISDoCNj3gowSaSEg6BLa84KMF6khIOgC2PeFdBEIkJO0DO97wbgIVEg9A75Q3eLmdM1zPxEMeAEvsuMG7NtCnrJBwhU8iEPKdKFcS89p1Cw2ClJpwT77/WckEiiaS/0WTVCBma4TOzQKhSaUalxtIlWzourmB0KRSjcsNpEo2dN3cQGhSqcaNfAMfxuz5MbcQ4poAAAAASUVORK5CYII=";
  160. var up = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABtElEQVRoQ+2Y3SoFURiGv+dmHHABTt2AM1FSkkRKUlIi2SmpnRJKJElJbWduwCGX4U6Wds3sttkz3/x8a+2xa83hNGvN87zvrFnTIBN+MOH8EgXabjA2EBswJhAfIWOA5uGxAXOExgliA0UBOuemReRYRL6AG2PQhcODNJDA90RkJrnzO7AYQsK7QA58yh1EwquAAh9MwptABfggEl4EFPiOiCwMrQXvEmYBBf4MOAm9JkwCCtw5cJTGHVKisYACdQEcZl+ZoSQaCSgwXeCgZHMb3h/Ma6K2gAJ/CeyXbVa+m6gloNz8Ctgrgw+xJioLKPDXwG5VeN8SlQQU+Ftgpy68T4lSAQX+DthuCu9LQhVQ4O+BLSu8D4lCAQX+EdjwBW+VyBVQ4J+Add/wFokRAQX+GVgLBd9U4o+AAv8CrIaGbyKRFfgWkdkM6CuwMi74ChIPwGZ63UDAOTcnIp8Z0DdgedzwZRLAgDvbwIeIzCcT9ICltuAViQ5wOtJA/4RzbkpE+p8FP0C3bfiMRO4vmtKd+L9IFHFEgbYbig3EBowJxEfIGKB5eGzAHKFxgtiAMUDz8F/6UtIxXjMNGgAAAABJRU5ErkJggg==";
  161. $(document).ready(function(){
  162. $.getScript = function(src, func){
  163. var script = document.createElement('script');
  164. script.async = 'async';
  165. script.src = src;
  166. script.onload = func || function(){};
  167. $('head')[0].appendChild(script);
  168. }
  169. var k = true;
  170. $(".question .btn").on('click',function(){
  171. if(k){
  172. $('.conter').show();
  173. $(this).addClass('on');
  174. $(this).find('img').attr('src',down);
  175. k = false;
  176. }else {
  177. $('.conter').hide();
  178. $(this).removeClass('on');
  179. $(this).find('img').attr('src',up);
  180. k = true;
  181. }
  182. });
  183. var ol = $('ol', $('.prettyprint')[0]);
  184. // 设置出错行
  185. var err_line = $('.line-' + LINE, ol[0])[0];
  186. if(err_line) err_line.className = err_line.className + ' line-error';
  187. $.getScript('//cdn.bootcss.com/prettify/r298/prettify.min.js', function(){
  188. prettyPrint();
  189. // 解决Firefox浏览器一个很诡异的问题
  190. // 当代码高亮后,ol的行号莫名其妙的错位
  191. // 但是只要刷新li里面的html重新渲染就没有问题了
  192. if(window.navigator.userAgent.indexOf('Firefox') >= 0){
  193. ol[0].innerHTML = ol[0].innerHTML;
  194. }
  195. });
  196. });
  197. </script>
  198. </body>
  199. </html>