web-dev-qa-db-fra.com

Comment afficher les erreurs sur laravel 4?

J'essaie de créer une application sur Laravel 4 bêta, mais je ne peux pas la déboguer car elle ne montre aucune erreur, display_errors est activé, error_reporting est E_ALL et debug => true (config/app.php). Lorsque j'essaie de faire une erreur sur public/index.php, il affiche une erreur d'analyse, mais lorsque je le fais sur le routeur, il affiche simplement une page vierge (écran blanc de la mort). Comment puis-je réparer cela?

Je vous remercie

25
Blue Genie

@Matanya - Avez-vous consulté les journaux de votre serveur pour savoir en quoi consiste réellement l'erreur 500? Cela pourrait être n'importe quel nombre de choses

@Aladin - L’écran blanc de la mort (WSOD) peut être diagnostiqué de trois manières avec Laravel 4.

Option 1: Allez dans vos journaux Laravel (app/storage/logs) et voyez si l’erreur est contenue dedans.

Option 2: Allez dans les journaux du serveur PHP et recherchez l'erreur PHP à l'origine du WSOD.

Option 3: Bonnes vieilles compétences de débogage - ajoutez une commande die ('bonjour') au début de votre fichier de routes - continuez à le déplacer de plus en plus profondément dans votre application jusqu'à ce que le message 'bonjour' ne soit plus affiché. En utilisant cela, vous pourrez affiner la ligne qui cause votre WSOD et résoudre le problème.

43
Laurence

J'ai eu un problème avec l'écran blanc après l'installation d'une nouvelle instance de laravel. Je n'ai rien trouvé dans les journaux parce que (finalement j'ai découvert) que la raison de l'écran blanc était que l'application/le stockage n'était pas accessible en écriture. 

Afin d’obtenir un message d’erreur à l’écran, j’ai ajouté ce qui suit à public/index.php

try {
    $app->run();
} catch(\Exception $e) {
    echo "<pre>";
    echo $e;
    echo "</pre>";
}

Après cela, il était facile de résoudre le problème.

30
cw24

Allez àapp/config/app.php 

et set 'debug' => true,

18
John Doe

Suite aux bons conseils de @The Shift Exchange, j’ai examiné le error_log et j’ai réussi à résoudre le problème. c'était simplement un problème d'autorisations:

Tue Feb 26 11:22:20 2013] [error] [client 127.0.0.1] PHP Fatal error:  Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/Users/matanya/Sites/indgo/app/start/../storage/logs/log-Apache2handler-2013-02-26.txt" could not be opened: failed to open stream: Permission denied' in /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:71\nStack trace:\n#0 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(77): Monolog\\Handler\\StreamHandler->write(Array)\n#1 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\RotatingFileHandler->write(Array)\n#2 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Logger.php(217): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)\n#3 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Logger.php(281): Monolog\\Logger->addRecord(400, Object(ErrorException), Array)\n#4 [internal function]: Monolog\\Logger->addError(Object(ErrorException))\n#5 /Users/matanya/Sites/in in /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 71

Une fois que j'ai utilisé chmod pour appliquer des autorisations moins strictes, tout est revenu à la normale.

Cependant, je ne suis pas sûr que cela réponde à la question du PO, car il obtenait un écran vide plutôt qu'une erreur de serveur.

3
Matanya

Dossier de configuration intérieur ouvert app.php

Changement

'debug' => false,

à 

'debug' => true, 
2
Hasnat Safder

Peut-être pas sur Laravel 4 cette fois, mais sur L5.2 *, j'avais un problème similaire:

J'ai simplement changé la propriété du répertoire storage/logs en www-data avec:

# chown -R www-data:www-data logs

PS: Ceci est sur Ubuntu 15 et avec Apache. 

Mon répertoire logs ressemble maintenant à:

drwxrwxr-x  2 www-data   www-data 4096 jaan  23 09:39 logs/

Dans le dossier racine Laravel, chmod le répertoire de stockage sur 777

1
TheRealJAG

https://github.com/loic-sharma/profiler c'est un bon exemple d'alternative à la barre de débogage laravel3.

0
Ajay Patel

Il suffit d'aller dans votre app/storage/logs il existe des journaux de error disponibles. Allez au nom de fichier de l'heure de la date d'aujourd'hui et vous trouverez error dernière dans votre application.

OR

Ouvrez app/config/app.php et modifiez le réglage

'debug' => false,

À 

'debug' => true, 

OR

Accédez au fichier .env dans votre application et modifiez la configuration. 

APP_LOG_LEVEL=debug
0
Rahul Hirve

Suite à la réponse de @ cw24 • à partir de Laravel 5.4, vous auriez plutôt la modification suivante dans public/index.php

try {
    $response = $kernel->handle(
        $request = Illuminate\Http\Request::capture()
    );
} catch(\Exception $e) {
    echo "<pre>";
    echo $e;
    echo "</pre>";
}

Et dans mon cas, j'avais oublié de lancer MySQL.
Qui, soit dit en passant, est généralement mysql.server start dans Terminal

0
Grant