2015-09-23 10 views
7

Ho un semplice codice in esecuzione su beforeAction caso di mia domanda:Yii2, errore si verifica mentre gettando NotFoundException

'on beforeAction' => function ($event) { 
    throw new \yii\web\NotFoundHttpException('The requested page does not exist.'); 
}, 

mi aspetto per mostrare semplicemente pagina 404 della mia candidatura, ma getta seguente errore:

An Error occurred while handling another error: 
exception 'yii\web\NotFoundHttpException' with message 'The requested page does not exist.' in /home/files/www/ucms/config/frontend/config.php:9 
Stack trace: 
0 [internal function]: {closure}(Object(yii\base\ActionEvent)) 
1 /home/files/www/ucms/vendor/yiisoft/yii2/base/Component.php(541): call_user_func(Object(Closure), Object(yii\base\ActionEvent)) 
2 /home/files/www/ucms/vendor/yiisoft/yii2/base/Module.php(607): yii\base\Component->trigger('beforeAction', Object(yii\base\ActionEvent)) 
3 /home/files/www/ucms/vendor/yiisoft/yii2/base/Controller.php(139): yii\base\Module->beforeAction(Object(yii\web\ErrorAction)) 
4 /home/files/www/ucms/vendor/yiisoft/yii2/base/Module.php(455): yii\base\Controller->runAction('error', Array) 
5 /home/files/www/ucms/vendor/yiisoft/yii2/web/ErrorHandler.php(85): yii\base\Module->runAction('site/error') 
6 /home/files/www/ucms/vendor/yiisoft/yii2/base/ErrorHandler.php(109): yii\web\ErrorHandler->renderException(Object(yii\web\NotFoundHttpException)) 
7 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\web\NotFoundHttpException)) 
8 {main} 
Previous exception: 
exception 'yii\web\NotFoundHttpException' with message 'The requested page does not exist.' in /home/files/www/ucms/config/frontend/config.php:9 
Stack trace: 
0 [internal function]: {closure}(Object(yii\base\ActionEvent)) 
1 /home/files/www/ucms/vendor/yiisoft/yii2/base/Component.php(541): call_user_func(Object(Closure), Object(yii\base\ActionEvent)) 
2 /home/files/www/ucms/vendor/yiisoft/yii2/base/Module.php(607): yii\base\Component->trigger('beforeAction', Object(yii\base\ActionEvent)) 
3 /home/files/www/ucms/vendor/yiisoft/yii2/base/Controller.php(139): yii\base\Module->beforeAction(Object(yii\base\InlineAction)) 
4 /home/files/www/ucms/vendor/yiisoft/yii2/base/Module.php(455): yii\base\Controller->runAction('', Array) 
5 /home/files/www/ucms/vendor/yiisoft/yii2/web/Application.php(84): yii\base\Module->runAction('', Array) 
6 /home/files/www/ucms/vendor/yiisoft/yii2/base/Application.php(375): yii\web\Application->handleRequest(Object(yii\web\Request)) 
7 /home/files/www/ucms/web/index.php(17): yii\base\Application->run() 
8 {main} 

risposta

7

Problema nel ErrorHandler.php file sul 85 line:

$result = Yii::$app->runAction($this->errorAction); 

Quando ErrorHandler prova eseguire ErrorAction, NotFoundHttpException attivato nuovamente e ErrorHandler mostra solo il messaggio di errore senza rendering.

Soluzione:

public function beforeAction($action) 
{ 
    if(!$action instanceof \yii\web\ErrorAction) { 
     throw new \yii\web\NotFoundHttpException('The requested page does not exist.'); 
    } 

    return parent::beforeAction($action); 
} 

risposta precedente: Sul server di produzione anche bisogno di installazione ambienti diritto impostazioni nel file index.php:

defined('YII_DEBUG') or define('YII_DEBUG', false); 
defined('YII_ENV') or define('YII_ENV', 'prod'); 
+1

Hai ragione. Risolvo la mia risposta :) –

+1

Ottimo! :) hai ragione, è stato come una ricorsione prima di questa correzione. Grazie! –

Problemi correlati