vagrant-dev : les exceptions doivent s'afficher
What is the current bug behavior?
Dans vagrant-dev, les exceptions ne s'affichent pas l'écran. s'afficher.
What is the expected correct behavior?
Pour le développeur, les exceptions doivent s'afficher à l'écran en plus d'être présent dans le log.
Relevant logs and/or screenshots
Code actuel de gestion gestions des exceptions dans config/bootstrap.php :
/**
* Register application error and exception handlers.
*/
$isCli = PHP_SAPI === 'cli';
if ($isCli) {
(new ConsoleErrorHandler(Configure::read('Error')))->register();
} else {
(new ErrorHandler(Configure::read('Error')))->register();
}
- Template:
src/Template/Error/Error500.ctp
Possible fixes
Solution temporaire
- dans la branche
develop
: !303 (merged) - mode prod : conserve le fonctionnement actuel en prod (pas d'affichage + log)
- mode dev:
- affichage des exceptions
- pas de log des exceptions /!\
/**
* Register application error and exception handlers.
*/
$isCli = PHP_SAPI === 'cli';
if ($isCli) {
(new ConsoleErrorHandler(Configure::read('Error')))->register();
} else {
if(Configure::read('debug') === true){
// Development Mode ---> display exceptions
// ---> see #731 for more details
// on the current implementation of exception handling
// and the other possible implementations.
}
else {
// Production Mode ---> no error messages, errors, or warnings shown
(new ErrorHandler(Configure::read('Error')))->register();
}
}
Informations complémentaires
// use App\Error\AppError; // cf. 2.
/**
* Register application error and exception handlers.
*/
$isCli = PHP_SAPI === 'cli';
if ($isCli) {
(new ConsoleErrorHandler(Configure::read('Error')))->register();
} else {
// 1. Code intitial
// --> log dans ./logs/
// --> affiche le template error500.ctp
// --> #552 pb pour manipuler la langue du navigateur et l'associé à la vue
// (new ErrorHandler(Configure::read('Error')))->register();
// 2. AppError existant (voir : App\Error\AppError extends BaseErrorHandler)
// --> à priori non utilisé
// --> buggé, non fini ----> fichier à supprimer src/Error/AppError.php
// --> pb pour manipuler la langue du navigateur et l'associé à la vue
// --> doc: https://book.cakephp.org/3/fr/development/errors.html#creer-vos-propres-gestionnaires-d-erreurs
// $errorHandler = new AppError();
// $errorHandler->register();
// 3. Solution temporaire pour le dev uniquement /!\
// ---> aucun code ici
// ---> affichage des exceptions en mode debug (par exemple: vagrant dev)
// ---> plus de log de l'execption /!\
// ---> page blanche en mode prod ----> /!\ non pertinant pour la prod
// 4. exceptionRenderer ----> certainement la meilleure solution
// --> doc: https://book.cakephp.org/3/fr/development/errors.html#utiliser-l-option-exceptionrenderer-dans-le-gestionnaire-par-defaut
}
Edited by Fabrice Gangler