]> andersk Git - sql-web.git/blame - lib/joe/errors.lib.php
git-svn-id: svn://presbrey.mit.edu/php/lib@127 a142d4bd-2cfb-0310-9673-cb33a7e74f58
[sql-web.git] / lib / joe / errors.lib.php
CommitLineData
9835a21d
JP
1<?php
2
3function ErrorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
4 $error_halt = true;
5 $error_type = 'Error';
6 $error_msg = " $errstr occured in $errfile on $errline at ".date("D M j G:i:s T Y");
ca43eea9
JP
7 $email_to = 'USER@localhost';
8 $email_from = 'USER@localhost';
9835a21d
JP
9 switch($errno) {
10 case E_USER_NOTICE:
11 case E_NOTICE:
12 $type = 'Notice';
13 $error_halt = false;
14 break;
15 case E_USER_WARNING:
16 case E_COMPILE_WARNING:
17 case E_CORE_WARNING:
18 case E_WARNING:
19 $type = 'Warning';
20 $error_halt = false;
21 break;
22 case E_USER_ERROR:
23 case E_COMPILE_ERROR:
24 case E_CORE_ERROR:
25 case E_ERROR:
26 $type = 'Fatal Error';
27 break;
28 case E_PARSE:
29 $type = 'Parse Error';
30 break;
31 default:
32 $type = 'Unknown Error';
33 break;
34 }
35 $error_bt = ErrorBacktrace(debug_backtrace());
36 $error_msg = $type . ':' . $error_msg . "\n" . $error_bt . "\n\n";
9835a21d
JP
37 $error_msg .= print_r(get_included_files(),1)."\n";
38 $error_msg .= print_r($errcontext,1);
39 error_log($error_msg, 1, $email_to);
40 if ($error_halt) {
41 while(ob_get_level()) { ob_end_clean(); }
9835a21d
JP
42 exit -1;
43 }
9835a21d
JP
44}
45
46function ErrorBacktrace($debug_backtrace) {
47 array_shift($debug_backtrace);
48 $output = '';
49 foreach ($debug_backtrace as $bt) {
50 $args = '';
51 foreach ($bt['args'] as $a) {
52 if (!empty($args)) {
53 $args .= ', ';
54 }
55 switch (gettype($a)) {
56 case 'integer':
57 case 'double':
58 $args .= $a;
59 break;
60 case 'string':
61 $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : '');
62 $args .= "\"$a\"";
63 break;
64 case 'array':
65 //$args .= 'Array('.count($a).')';
66 $args .= print_r($a,1);
67 break;
68 case 'object':
69 $args .= 'Object('.get_class($a).')';
70 break;
71 case 'resource':
72 $args .= 'Resource('.strstr($a, '#').')';
73 break;
74 case 'boolean':
75 $args .= $a ? 'True' : 'False';
76 break;
77 case 'NULL':
78 $args .= 'Null';
79 break;
80 default:
81 $args .= 'Unknown';
82 }
83 }
84 empty($bt['class']) && $bt['class'] = '';
85 empty($bt['type']) && $bt['type'] = '';
86 empty($bt['function']) && $bt['function'] = '';
87 $output .= "\n";
88 $output .= "file: {$bt['line']} - {$bt['file']}\n";
89 $output .= "call: {$bt['class']}{$bt['type']}{$bt['function']}($args)\n";
90 }
91 return $output;
92}
93
94set_error_handler('ErrorHandler');
95
96?>
This page took 0.050453 seconds and 5 git commands to generate.