diff --git a/framework/base/Application.php b/framework/base/Application.php index 2a12317..bb9be2f 100644 --- a/framework/base/Application.php +++ b/framework/base/Application.php @@ -89,6 +89,7 @@ abstract class Application extends Module * @see language */ public $sourceLanguage = 'en_us'; + public $preload = array('errorHandler'); private $_runtimePath; private $_ended = false; @@ -115,7 +116,6 @@ abstract class Application extends Module \Yii::$application = $this; $this->setBasePath($basePath); \Yii::setAlias('application', $this->getBasePath()); - $this->initSystemHandlers(); $this->registerCoreComponents(); } @@ -641,19 +641,6 @@ abstract class Application extends Module } /** - * Initializes the class autoloader and error handlers. - */ - protected function initSystemHandlers() - { - if (YII_ENABLE_EXCEPTION_HANDLER) { - set_exception_handler(array($this, 'handleException')); - } - if (YII_ENABLE_ERROR_HANDLER) { - set_error_handler(array($this, 'handleError'), error_reporting()); - } - } - - /** * Registers the core application components. * @see setComponents */ diff --git a/framework/base/ErrorHandler.php b/framework/base/ErrorHandler.php index 8c3cd61..7abd43e 100644 --- a/framework/base/ErrorHandler.php +++ b/framework/base/ErrorHandler.php @@ -125,7 +125,12 @@ class ErrorHandler extends ApplicationComponent $this->clearOutput(); } - $this->render($exception); + try { + $this->render($exception); + } catch (\Exception $e) { + // use the most primitive way to display exception thrown in the error view + $this->renderAsText($e); + } } protected function render($exception) @@ -318,12 +323,9 @@ class ErrorHandler extends ApplicationComponent public function renderAsText($exception) { if (YII_DEBUG) { - echo get_class($exception) . "\n"; - echo $exception->getMessage() . ' (' . $exception->getFile() . ':' . $exception->getLine() . ")\n"; - echo $exception->getTraceAsString(); + echo $exception; } else { - echo get_class($exception) . "\n"; - echo $exception->getMessage(); + echo get_class($exception) . ':' . $exception->getMessage(); } } diff --git a/framework/base/View.php b/framework/base/View.php index 45f3da5..d6749e0 100644 --- a/framework/base/View.php +++ b/framework/base/View.php @@ -226,7 +226,7 @@ class View extends Component $view .= '.php'; } if ($view[0] === '@') { - $file = \Yii::getAlias($view[0]); + $file = \Yii::getAlias($view); } elseif (!empty($this->basePath)) { $basePaths = is_array($this->basePath) ? $this->basePath : array($this->basePath); foreach ($basePaths as $basePath) { diff --git a/framework/views/error.php b/framework/views/error.php index 05b7a79..9be8844 100644 --- a/framework/views/error.php +++ b/framework/views/error.php @@ -58,10 +58,7 @@ $owner = $this->owner; The above error occurred while the Web server was processing your request.
- If you think this is a server error, please contact us. -
-- Thank you. + Please contact us if you think this is a server error. Thank you.