Пример #1
0
 /**
  * Error Handler
  *
  * This is the custom error handler that is declared at the (relative)
  * top of CodeIgniter.php. The main reason we use this is to permit
  * PHP errors to be logged in our own log files since the user may
  * not have access to server logs. Since this function effectively
  * intercepts PHP errors, however, we also need to display errors
  * based on the current error_reporting level.
  * We do that with the use of a PHP error template.
  *
  * @param	int	$severity
  * @param	string	$message
  * @param	string	$filepath
  * @param	int	$line
  * @return	void
  */
 function _error_handler($severity, $message, $filepath, $line)
 {
     $is_error = ((E_ERROR | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $severity) === $severity;
     // When an error occurred, set the status header to '500 Internal Server Error'
     // to indicate to the client something went wrong.
     // This can't be done within the $_error->show_php_error method because
     // it is only called when the display_errors flag is set (which isn't usually
     // the case in a production environment) or when errors are ignored because
     // they are above the error_reporting threshold.
     if ($is_error) {
         set_status_header(500);
     }
     // Should we ignore the error? We'll get the current error_reporting
     // level and add its bits with the severity bits to find out.
     if (($severity & error_reporting()) !== $severity) {
         return;
     }
     $_error = new Core\MyException();
     // Should we display the error?
     if (str_ireplace(['off', 'none', 'no', 'false', 'null'], '', ini_get('display_errors'))) {
         $_error->show_php_error($severity, $message, $filepath, $line);
     }
     // If the error is fatal, the execution of the script should be stopped because
     // errors can't be recovered from. Halting the script conforms with PHP's
     // default error handling. See http://www.php.net/manual/en/errorfunc.constants.php
     if ($is_error) {
         exit(1);
         // EXIT_ERROR
     }
 }