From afdedd1b184692b1aacde4d81c2b1b1fb0726c15 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 13 Feb 2018 16:26:31 +0100 Subject: index.php: Hacky way of telling the php error handler to skip stack frames This can be used to show more meaningful error messages in debug mode at the bottom of the page. Prefix the error message with [skip:N] where N is the number of stack frames to skip when printing the error message. The php error log will still receive the complete stack trace. --- index.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/index.php b/index.php index d7018e17..4816ef42 100644 --- a/index.php +++ b/index.php @@ -104,6 +104,15 @@ spl_autoload_register(function ($class) { if (defined('CONFIG_DEBUG') && CONFIG_DEBUG) { set_error_handler(function ($errno, $errstr, $errfile, $errline) { + if (preg_match('/^\[skip:\s*(\d+)\]\s*(.*)/is', $errstr, $out)) { + $errstr = $out[2]; + $trace = debug_backtrace(); + $idx = (int)$out[1] + 1; + if (count($trace) > $idx) { + $errfile = $trace[$idx]['file']; + $errline = $trace[$idx]['line']; + } + } global $SLX_ERRORS; $SLX_ERRORS[] = array( 'errno' => $errno, -- cgit v1.2.3-55-g7522