source: trunk/src/inc/ErrorHandler.php@ 7637

Last change on this file since 7637 was 7637, checked in by Pieter Naber, 15 years ago

Updated ErrorHandler to use our LogHandler. Updated LogHandler with an adjustable error level.

File size: 4.2 KB
RevLine 
[7618]1<?
2/*
3 * Project: NodeMap2.0
4 * File: ErrorHandler.class.php
5 * Purpose: Handling (PHP) errors generated by the application
6 */
7
8/*
9 * PHP errors:
[7637]10 * E_ERROR ( integer ) Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted.
11 * E_WARNING ( integer ) Run-time warnings (non-fatal errors). Execution of the script is not halted.
12 * E_PARSE ( integer ) Compile-time parse errors. Parse errors should only be generated by the parser.
13 * E_NOTICE ( integer ) Run-time notices. Indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script.
[7618]14 * E_CORE_ERROR ( integer ) Fatal errors that occur during PHP's initial startup. This is like an E_ERROR, except it is generated by the core of PHP. since PHP 4
15 * E_CORE_WARNING ( integer ) Warnings (non-fatal errors) that occur during PHP's initial startup. This is like an E_WARNING, except it is generated by the core of PHP. since PHP 4
16 * E_COMPILE_ERROR ( integer ) Fatal compile-time errors. This is like an E_ERROR, except it is generated by the Zend Scripting Engine. since PHP 4
17 * E_COMPILE_WARNING ( integer ) Compile-time warnings (non-fatal errors). This is like an E_WARNING, except it is generated by the Zend Scripting Engine. since PHP 4
18 * E_USER_ERROR ( integer ) User-generated error message. This is like an E_ERROR, except it is generated in PHP code by using the PHP function trigger_error(). since PHP 4
19 * E_USER_WARNING ( integer ) User-generated warning message. This is like an E_WARNING, except it is generated in PHP code by using the PHP function trigger_error(). since PHP 4
20 * E_USER_NOTICE ( integer ) User-generated notice message. This is like an E_NOTICE, except it is generated in PHP code by using the PHP function trigger_error(). since PHP 4
21 * E_STRICT ( integer ) Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code. since PHP 5
22 * E_RECOVERABLE_ERROR ( integer ) Catchable fatal error. It indicates that a probably dangerous error occured, but did not leave the Engine in an unstable state. If the error is not caught by a user defined handle (see also set_error_handler()), the application aborts as it was an E_ERROR. since PHP 5.2.0
23 * E_ALL ( integer ) All errors and warnings, as supported, except of level E_STRICT in PHP < 6.
24 */
25
[7631]26/*
[7637]27 * Function: NodeErrorHandler
[7631]28 * Parameters: int $errno, string $errstr, string $errfile, int $errline, array $errcontext
[7637]29 * Function: Handling with errors, decides what log level it is and send it to LogHandler
[7631]30 */
[7637]31function NodeErrorHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext) {
[7631]32 switch ($errno) {
33 case E_ERROR:
[7637]34 trigger_log(SYSLOG_ERR, $errstr, $errfile, $errline);
35 break;
36 case E_WARNING:
37 trigger_log(SYSLOG_WARNING, $errstr, $errfile, $errline);
38 break;
39 case E_PARSE:
40 trigger_log(SYSLOG_ERR, $errstr, $errfile, $errline);
41 break;
42 case E_NOTICE:
43 trigger_log(SYSLOG_NOTICE, $errstr, $errfile, $errline);
44 break;
[7631]45 case E_CORE_ERROR:
[7637]46 trigger_log(SYSLOG_ERR, $errstr, $errfile, $errline);
47 break;
[7631]48 case E_CORE_WARNING:
[7637]49 trigger_log(SYSLOG_WARNING, $errstr, $errfile, $errline);
50 break;
[7631]51 case E_COMPILE_ERROR:
[7637]52 trigger_log(SYSLOG_ERR, $errstr, $errfile, $errline);
53 break;
[7631]54 case E_COMPILE_WARNING:
[7637]55 trigger_log(SYSLOG_WARNING, $errstr, $errfile, $errline);
56 break;
[7631]57 case E_USER_ERROR:
[7637]58 trigger_log(SYSLOG_ERR, $errstr, $errfile, $errline);
59 break;
[7631]60 case E_USER_WARNING:
[7637]61 trigger_log(SYSLOG_WARNING, $errstr, $errfile, $errline);
62 break;
[7631]63 case E_USER_NOTICE:
[7637]64 trigger_log(SYSLOG_NOTICE, $errstr, $errfile, $errline);
65 break;
[7631]66 case E_STRICT:
[7637]67 trigger_log(SYSLOG_NOTICE, $errstr, $errfile, $errline);
68 break;
[7631]69 case E_RECOVERABLE_ERROR:
[7637]70 trigger_log(SYSLOG_ERR, $errstr, $errfile, $errline);
71 break;
[7631]72 default:
[7637]73 trigger_log(SYSLOG_NOTICE, $errstr, $errfile, $errline);
74 break;
[7631]75 }
[7618]76
[7631]77 /* Don't execute PHP internal error handler */
78 return true;
[7621]79}
80
[7637]81set_exception_handler('NodeErrorHandler');
Note: See TracBrowser for help on using the repository browser.