All pastes #36815 Raw Edit

Anonymous

public php v1 · immutable
#36815 ·published 2006-01-14 22:17 UTC
rendered paste body
function phpagi_error_handler($level, $message, $file, $line, $context)  {    if(ini_get('error_reporting') == 0) return; // this happens with an @	switch($level)    {        case E_WARNING:        case E_USER_WARNING:          @syslog(LOG_WARNING, $file . '[' . $line . ']: ' . $message);          break;        case E_NOTICE:        case E_USER_NOTICE:          @syslog(LOG_NOTICE, $file . '[' . $line . ']: ' . $message);          break;        case E_USER_ERROR:          @syslog(LOG_ERR, $file . '[' . $line . ']: ' . $message);          break;    }    global $phpagi_error_handler_email;    if(function_exists('mail') && !is_null($phpagi_error_handler_email)) // generate email debugging information    {      // decode error level      switch($level)      {        case E_WARNING:        case E_USER_WARNING:          $level = "Warning";          break;        case E_NOTICE:        case E_USER_NOTICE:          $level = "Notice";          break;        case E_USER_ERROR:          $level = "Error";          break;      }      // build message      $basefile = basename($file);      $subject = "$basefile/$line/$level: $message";      $message = "$level: $message in $file on line $line\n\n";      if(function_exists('mysql_errno') && strpos(' '.strtolower($message), 'mysql'))        $message .= 'MySQL error ' . mysql_errno() . ": " . mysql_error() . "\n\n";      // figure out who we are      if(function_exists('socket_create'))      {        $addr = NULL;        $port = 80;        $socket = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);        @socket_connect($socket, '64.0.0.0', $port);        @socket_getsockname($socket, $addr, $port);        @socket_close($socket);        $message .= "\n\nIP Address: $addr\n";      }      // include variables      $message .= "\n\nContext:\n" . print_r($context, true);      $message .= "\n\nGLOBALS:\n" . print_r($GLOBALS, true);      $message .= "\n\nBacktrace:\n" . print_r(debug_backtrace(), true);      // include code fragment      if(file_exists($file))      {        $message .= "\n\n$file:\n";        $code = @file($file);        for($i = max(0, $line - 10); $i < min($line + 10, count($code)); $i++)          $message .= ($i + 1)."\t$code[$i]";      }      // make sure message is fully readable (convert unprintable chars to hex representation)      $ret = '';      for($i = 0; $i < strlen($message); $i++)      {        $c = ord($message{$i});        if($c == 10 || $c == 13 || $c == 9)          $ret .= $message{$i};        elseif($c < 16)          $ret .= '\x0' . dechex($c);        elseif($c < 32 || $c > 127)          $ret .= '\x' . dechex($c);        else          $ret .= $message{$i};      }      $message = $ret;      // send the mail if less than 5 errors      static $mailcount = 0;      if($mailcount < 5)        @mail($phpagi_error_handler_email, $subject, $message);      $mailcount++;    } } $phpagi_error_handler_email = NULL;