mirror of
https://github.com/e107inc/e107.git
synced 2025-08-02 12:48:26 +02:00
Improved backtrace debug info when using xdebug. Added forum e_status.php and e_latest.php to the deprecated list.
This commit is contained in:
87
class2.php
87
class2.php
@@ -2068,11 +2068,22 @@ class error_handler
|
|||||||
|
|
||||||
var $errors;
|
var $errors;
|
||||||
var $debug = false;
|
var $debug = false;
|
||||||
|
protected $xdebug = false;
|
||||||
|
protected $docroot = '';
|
||||||
|
protected $label = array();
|
||||||
|
|
||||||
function error_handler()
|
function __construct()
|
||||||
{
|
{
|
||||||
//
|
$this->label = array(E_NOTICE => "Notice", E_WARNING => "Warning", E_DEPRECATED => "Deprecated", E_STRICT => "Strict");
|
||||||
|
$this->color = array(E_NOTICE=> 'info', E_WARNING=>'warning', E_DEPRECATED => 'danger', E_STRICT => 'primary');
|
||||||
|
$this->docroot = dirname(realpath(__FILE__)).DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
// This is initialized before the current debug level is known
|
// This is initialized before the current debug level is known
|
||||||
|
if(function_exists('xdebug_get_function_stack'))
|
||||||
|
{
|
||||||
|
$this->xdebug = true;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
global $_E107;
|
global $_E107;
|
||||||
if(isset($_E107['debug']))
|
if(isset($_E107['debug']))
|
||||||
@@ -2102,14 +2113,29 @@ class error_handler
|
|||||||
$startup_error = (!defined('E107_DEBUG_LEVEL')); // Error before debug system initialized
|
$startup_error = (!defined('E107_DEBUG_LEVEL')); // Error before debug system initialized
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch($type) {
|
switch($type) {
|
||||||
case E_NOTICE:
|
case E_NOTICE:
|
||||||
|
case E_DEPRECATED:
|
||||||
|
// case E_STRICT:
|
||||||
|
|
||||||
if ($startup_error || E107_DBG_ALLERRORS || E107_DBG_ERRBACKTRACE)
|
if ($startup_error || E107_DBG_ALLERRORS || E107_DBG_ERRBACKTRACE)
|
||||||
{
|
{
|
||||||
$error['short'] = "Notice: {$message}, Line {$line} of {$file}<br />\n";
|
|
||||||
|
|
||||||
|
$error['short'] = "<span class='label label-".$this->color[$type]."'>".$this->label[$type]."</span> {$message}, Line {$line} of {$file}<br />\n";
|
||||||
|
|
||||||
|
if($this->xdebug)
|
||||||
|
{
|
||||||
|
$backtrace = xdebug_get_function_stack();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$trace = debug_backtrace();
|
$trace = debug_backtrace();
|
||||||
$backtrace[0] = (isset($trace[1]) ? $trace[1] : "");
|
$backtrace[0] = (isset($trace[1]) ? $trace[1] : "");
|
||||||
$backtrace[1] = (isset($trace[2]) ? $trace[2] : "");
|
$backtrace[1] = (isset($trace[2]) ? $trace[2] : "");
|
||||||
|
}
|
||||||
|
|
||||||
$error['trace'] = $backtrace;
|
$error['trace'] = $backtrace;
|
||||||
$this->errors[] = $error;
|
$this->errors[] = $error;
|
||||||
}
|
}
|
||||||
@@ -2117,10 +2143,20 @@ class error_handler
|
|||||||
case E_WARNING:
|
case E_WARNING:
|
||||||
if ($startup_error || E107_DBG_BASIC || E107_DBG_ERRBACKTRACE)
|
if ($startup_error || E107_DBG_BASIC || E107_DBG_ERRBACKTRACE)
|
||||||
{
|
{
|
||||||
$error['short'] = "Warning: {$message}, Line {$line} of {$file}<br />\n";
|
// $error['short'] = "Warning: {$message}, Line {$line} of {$file}<br />\n";
|
||||||
|
$error['short'] = "<span class='label label-".$this->color[$type]."'>".$this->label[$type]."</span> {$message}, Line {$line} of {$file}<br />\n";
|
||||||
|
|
||||||
|
if($this->xdebug)
|
||||||
|
{
|
||||||
|
$backtrace = xdebug_get_function_stack();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$trace = debug_backtrace();
|
$trace = debug_backtrace();
|
||||||
$backtrace[0] = (isset($trace[1]) ? $trace[1] : "");
|
$backtrace[0] = (isset($trace[1]) ? $trace[1] : "");
|
||||||
$backtrace[1] = (isset($trace[2]) ? $trace[2] : "");
|
$backtrace[1] = (isset($trace[2]) ? $trace[2] : "");
|
||||||
|
}
|
||||||
|
|
||||||
$error['trace'] = $backtrace;
|
$error['trace'] = $backtrace;
|
||||||
$this->errors[] = $error;
|
$this->errors[] = $error;
|
||||||
}
|
}
|
||||||
@@ -2141,6 +2177,44 @@ class error_handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function render_trace($array)
|
||||||
|
{
|
||||||
|
if($this->xdebug == false)
|
||||||
|
{
|
||||||
|
return print_a($array, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
array_pop($array);
|
||||||
|
|
||||||
|
|
||||||
|
$text = "<table class='table table-bordered table-striped'>
|
||||||
|
<tr class='danger'><th>#</th><th>Function</th><th>Location</th></tr>";
|
||||||
|
foreach($array as $key=>$val)
|
||||||
|
{
|
||||||
|
$text .= "
|
||||||
|
<tr>
|
||||||
|
<td>".$key."</td>
|
||||||
|
<td>";
|
||||||
|
$text .= !empty($val['class']) ? $val['class']."->" : '';
|
||||||
|
$text .= !empty($val['include_filename']) ? "include: ". str_replace($this->docroot,'', $val['include_filename']) : '';
|
||||||
|
$text .= !empty($val['function']) ? $val['function']."(" : "";
|
||||||
|
$text .= !empty($val['params']) ? print_r($val['params'],true) : '';
|
||||||
|
$text .= !empty($val['function']) ? ")" : "";
|
||||||
|
$text .="</td>
|
||||||
|
<td>";
|
||||||
|
$text .= str_replace($this->docroot,'', $val['file']).":".$val['line'];
|
||||||
|
$text .= "</td>
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$text .= "</table>";
|
||||||
|
|
||||||
|
return $text;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function return_errors()
|
function return_errors()
|
||||||
{
|
{
|
||||||
$index = 0; $colours[0] = "#C1C1C1"; $colours[1] = "#B6B6B6";
|
$index = 0; $colours[0] = "#C1C1C1"; $colours[1] = "#B6B6B6";
|
||||||
@@ -2150,10 +2224,13 @@ class error_handler
|
|||||||
|
|
||||||
if (E107_DBG_ERRBACKTRACE)
|
if (E107_DBG_ERRBACKTRACE)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($this->errors as $key => $value)
|
foreach ($this->errors as $key => $value)
|
||||||
{
|
{
|
||||||
$ret .= "\t<tr>\n\t\t<td class='forumheader3' >{$value['short']}</td><td><input class='btn btn-info button e-expandit' data-target = 'bt_{$key}' type ='button' style='cursor: hand; cursor: pointer;' size='30' value='Back Trace' />\n";
|
$ret .= "\t<tr>\n\t\t<td class='forumheader3' >{$value['short']}</td><td><input class='btn btn-info button e-expandit' data-target = 'bt_{$key}' type ='button' style='cursor: hand; cursor: pointer;' size='30' value='Back Trace' />\n";
|
||||||
$ret .= "\t<tr>\n<td style='display: none;' colspan='2' id='bt_{$key}'>".print_a($value['trace'], true)."</td></tr>\n";
|
$ret .= "\t<tr>\n<td style='display: none;' colspan='2' id='bt_{$key}'>".$this->render_trace($value['trace'])."</td></tr>\n";
|
||||||
$ret .= "</td>\n\t</tr>";
|
$ret .= "</td>\n\t</tr>";
|
||||||
if($index == 0) { $index = 1; } else { $index = 0; }
|
if($index == 0) { $index = 1; } else { $index = 0; }
|
||||||
}
|
}
|
||||||
|
@@ -207,6 +207,8 @@ class admin_start
|
|||||||
e_ADMIN."download.php",
|
e_ADMIN."download.php",
|
||||||
e_PLUGIN."banner/config.php",
|
e_PLUGIN."banner/config.php",
|
||||||
e_PLUGIN."forum/newforumposts_menu_config.php",
|
e_PLUGIN."forum/newforumposts_menu_config.php",
|
||||||
|
e_PLUGIN."forum/e_latest.php",
|
||||||
|
e_PLUGIN."forum/e_status.php"
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -3274,7 +3274,10 @@ class e107
|
|||||||
define('e_UC_ADMIN', 254);
|
define('e_UC_ADMIN', 254);
|
||||||
define('e_UC_NOBODY', 255);
|
define('e_UC_NOBODY', 255);
|
||||||
|
|
||||||
|
if(!defined('e_DEBUG'))
|
||||||
|
{
|
||||||
|
define('e_DEBUG', false);
|
||||||
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -3632,8 +3635,6 @@ class e107
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
unset($requestUrl, $requestUri);
|
unset($requestUrl, $requestUri);
|
||||||
// END request uri/url detection, XSS protection
|
// END request uri/url detection, XSS protection
|
||||||
|
|
||||||
|
@@ -521,7 +521,8 @@ class e_menu
|
|||||||
$e107_debug ? include(e_PLUGIN.$mpath.$mname.'.php') : @include(e_PLUGIN.$mpath.$mname.'.php');
|
$e107_debug ? include(e_PLUGIN.$mpath.$mname.'.php') : @include(e_PLUGIN.$mpath.$mname.'.php');
|
||||||
}
|
}
|
||||||
e107::getDB()->db_Mark_Time("(After ".$mname.")");
|
e107::getDB()->db_Mark_Time("(After ".$mname.")");
|
||||||
if($error_handler->debug==true)
|
|
||||||
|
if(e_DEBUG === true)
|
||||||
{
|
{
|
||||||
echo "\n<!-- Menu End: ".$mname." -->\n";
|
echo "\n<!-- Menu End: ".$mname." -->\n";
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user