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