Yii 1: come vengono gestire le CHttpException?

In test, ho




defined('YII_DEBUG') or define('YII_DEBUG', true);



mentre, ovviamente, in produzione ho




defined('YII_DEBUG') or define('YII_DEBUG', false);



Se per una pagina a cui sta accedendo un utente non ha i dovuti permessi RBAC in test ottengo una bella CHttpException, con testo “Non si ha l’autorizzazione ad effettuare l’operazione”.

Viene da questa porzione di codice, posizionata in yii/framework/web/auth/CAccessControlFilter.php(182)




177     protected function accessDenied($user,$message)

178     {

179         if($user->getIsGuest())

180             $user->loginRequired();

181         else

182             throw new CHttpException(403,$message);

183     }



Da qualche tempo devo aver modificato male qualcosa perchè se ho un accessDenied mi compare a schermo questo schifosssimo testo, non decorato dal tema, segno che qualcosa è andato storto




Notice: Array to string conversion in /var/www/httpdocs/<domain>/yii/framework/web/CWebApplication.php on line 314


Notice: Array to string conversion in /var/www/httpdocs/<domain>/yii/framework/YiiBase.php on line 617

CHttpException


Unable to resolve the request "Array".



Ci tengo a precisare che i due notice li ho forzati solo ora per fare del debug

La versione di Yii è 1.1.16-release

Cosa c’è che non va?

Ho aggiunto un dump nella CWebApplication e questo è l’array incriminato, dove invece dovrebbe esserci una stringa




array

(

    0 => 'site/error'

)



Questo mi ha ricordato qualcosa visto su github qui: https://github.com/yiisoft/yii/pull/2903#issuecomment-25002185

Aveva a che fare col problema di avere lo stack trace in sviluppo, così la soluzione proposta è di inserire nel config/main.php questo




'errorHandler'=>array(

		    'errorAction' => YII_DEBUG ? null : array('site/error'),

		),



Peccato che fosse errato, andava corretto in




'errorHandler'=>array(

		    'errorAction' => YII_DEBUG ? null : 'site/error',

		),