function my_errorhandler($errno, $errstr, $errfile, $errline, array $errcontext) { $errortype = array(E_ERROR => 'Error', E_WARNING => 'Warning', E_PARSE => 'Parsing Error', E_NOTICE => 'Notice', E_CORE_ERROR => 'Core Error', E_CORE_WARNING => 'Core Warning', E_COMPILE_ERROR => 'Compile Error', E_COMPILE_WARNING => 'Compile Warning', E_USER_ERROR => 'User Error', E_USER_WARNING => 'User Warning', E_USER_NOTICE => 'User Notice', E_STRICT => 'Runtime Notice', E_RECOVERABLE_ERROR => 'Catchable Fatal Error'); $errmsg = "File={$errfile}\nLine={$errline}\nMessage={$errstr} "; $backtrace = debug_backtrace(); array_shift($backtrace); // get rid of first trace which is this function. $btrace = ''; foreach ($backtrace as $val) { if (isset($val['function'])) { $btrace .= "function: {$val['function']} in {$val['file']} on line {$val['line']}\n"; if (isset($val['args'])) { foreach ($val['args'] as $arg) { if (@get_class($arg) || is_array($arg)) { //error_log("CLASS or ARRAY"); // A class or array $x = escapeltgt(print_r($arg, true)); $btrace .= " arg: {$x}\n"; } else { // Not a class or array $arg = $arg === false ? 'false' : $arg; $arg = $arg === true ? 'true' : $arg; $x = escapeltgt(print_r($arg, true)); $btrace .= " arg: {$x}\n"; } } } } } if ($btrace) { $btrace = "<br>\nBacktrace:\n<pre style='text-align: left'>{$btrace}</pre>"; } else { $btrace = "\n"; } $errmsg .= "{$btrace}"; // This may be defined by sites that have members finalOutput($errmsg, "{$errortype[$errno]}"); return true; // DON'T do normal error handeling. }
function vardump($value, $msg = null) { if ($msg) { $msg = "<b>{$msg}</b>\n"; } echo "<pre>{$msg}" . escapeltgt(print_r($value, true)) . "</pre>\n\n"; }
function put($msg) { $msg = escapeltgt($msg); echo "<pre>{$msg}</pre>\n"; }