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
@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.
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.
Allez àapp/config/app.php
et set 'debug' => true,
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.
Dossier de configuration intérieur ouvert app.php
Changement
'debug' => false,
à
'debug' => true,
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
https://github.com/loic-sharma/profiler c'est un bon exemple d'alternative à la barre de débogage laravel3.
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
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