'.$error_msg.'
'; } else { $error_msg .= print_r(get_included_files(),1)."\n"; $error_msg .= print_r($errcontext,1); error_log($error_msg, 1, $email_to); if ($error_halt) { while(ob_get_level()) { ob_end_clean(); } require_once('security.lib.php'); redirect('error'); exit -1; } } } function ErrorBacktrace($debug_backtrace) { array_shift($debug_backtrace); $output = ''; foreach ($debug_backtrace as $bt) { $args = ''; foreach ($bt['args'] as $a) { if (!empty($args)) { $args .= ', '; } switch (gettype($a)) { case 'integer': case 'double': $args .= $a; break; case 'string': $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : ''); $args .= "\"$a\""; break; case 'array': //$args .= 'Array('.count($a).')'; $args .= print_r($a,1); break; case 'object': $args .= 'Object('.get_class($a).')'; break; case 'resource': $args .= 'Resource('.strstr($a, '#').')'; break; case 'boolean': $args .= $a ? 'True' : 'False'; break; case 'NULL': $args .= 'Null'; break; default: $args .= 'Unknown'; } } empty($bt['class']) && $bt['class'] = ''; empty($bt['type']) && $bt['type'] = ''; empty($bt['function']) && $bt['function'] = ''; $output .= "\n"; $output .= "file: {$bt['line']} - {$bt['file']}\n"; $output .= "call: {$bt['class']}{$bt['type']}{$bt['function']}($args)\n"; } return $output; } set_error_handler('ErrorHandler'); ?>