Error handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am trying to add some error handling to my code.  Instead of
reinventing the wheel, I searched and found the code below.  For the
most part, it seems to work.  When I have an error, it doesn't get
shown.  However, I don't get any output.  I tracked it down to the
$errno.  It is outputting a number where the switch statement is
expecting words.   Short of typing an array converting number to
words, what am I missing/doing wrong?

set_error_handler('errorHandler');

function errorHandler ($errno, $errstr, $errfile, $errline, $errcontext){
	global $query;

	switch ($errno){
		case E_USER_WARNING:
		case E_USER_NOTICE:
		case E_WARNING:
		case E_NOTICE:
		case E_CORE_WARNING:
		case E_COMPILE_WARNING:
			break;
		case E_USER_ERROR:
		case E_ERROR:
		case E_PARSE:
		case E_CORE_ERROR:
		case E_COMPILE_ERROR:

		if(eregi('^(sql)$', $errstr)){
			$MYSQL_ERRNO = mysql_errno();
			$MYSQL_ERROR = mysql_error();
			$errstr = "MySQL error: $MYSQL_ERRNO : $MYSQL_ERROR";
		}else{
			$query = NULL;
		}
		
		$errorstring = "<h2>" .date('Y-m-d H:i:s') ."</h2>\n";
		$errorstring .= "<p>Fatal Error: $errstr (# $errno).</p>\n";
		
		if ($query) $errorstring .= "<p>SQL query: $query</p>\n";
		
		$errorstring .= "<p>Error in line $errline of file '$errfile'.</p>\n";
		$errorstring .= "<p>Script: '{$_SERVER['PHP_SELF']}'.</p>\n";
		
		if(isset($errcontext['this'])){
			if(is_object($errcontext['this'])){
				$classname = get_class($errcontext['this']);
				$parentclass = get_parent_class($errcontext['this']);
				$errorstring .= "<p>Object/Class: '$classname', Parent Class:
'$parentclass'.</p>\n";
			}
		}
		
		echo "<h2>This system is temporarily unavailable</h2>\n";
		echo "<p>The following has been reported to the administrator:</p>\n";
		echo "<b><font color='red'>\n$errorstring\n</b></font>";
		
		/*error_log($errorstring, 1, $_SERVER['SERVER_ADMIN']);
		
		$logfile = $_SERVER['DOCUMENT_ROOT'] .'/errorlog.html';
		error_log($errorstring, 3, $logfile);*/
		
		/*session_start();
		session_unset();
		session_destroy();*/
		
		die();
		default:
		break;
		}


	# prevent further script execution
	exit();
}

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux