Beispiel #1
0
 /**
  * Special case to deal with Fatal errors and the like.
  */
 public function handleShutdown()
 {
     // If we reached this step, we are in shutdown handler.
     // An exception thrown in a shutdown handler will not be propagated
     // to the exception handler. Pass that information along.
     $this->canThrowExceptions = false;
     $error = error_get_last();
     if ($error && Misc::isLevelFatal($error['type'])) {
         // If there was a fatal error,
         // it was not handled in handleError yet.
         $this->handleError($error['type'], $error['message'], $error['file'], $error['line']);
     }
 }
Beispiel #2
0
 /**
  * Gets the backgrace from an exception.
  *
  * If xdebug is installed
  *
  * @param Exception $e
  * @return array
  */
 protected function getTrace(\Exception $e)
 {
     $traces = $e->getTrace();
     // Get trace from xdebug if enabled, failure exceptions only trace to the shutdown handler by default
     if (!$e instanceof \ErrorException) {
         return $traces;
     }
     if (!Misc::isLevelFatal($e->getSeverity())) {
         return $traces;
     }
     if (!extension_loaded('xdebug') || !xdebug_is_enabled()) {
         return array();
     }
     // Use xdebug to get the full stack trace and remove the shutdown handler stack trace
     $stack = array_reverse(xdebug_get_function_stack());
     $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
     $traces = array_diff_key($stack, $trace);
     return $traces;
 }