Как отображать ошибки на laravel 4?
Я пытаюсь создать приложение на бета-версии Laravel 4, но я не могу его отладить, потому что он не показывает никаких ошибок, display_errors
включен, error_reporting
есть E_ALL
и debug => true
(config/app.php
). Когда я пытаюсь сделать ошибку на public/index.php
, она показывает ошибку синтаксического анализа, но когда я делаю это на маршрутизаторе, она просто показывает пустую страницу (белый экран смерти). Как я могу это исправить?
Спасибо
Ответы
Ответ 1
@Matanya - посмотрели ли вы на свои журналы сервера, чтобы увидеть, что на самом деле ошибка 500? Это может быть любое количество вещей
@Aladin - белый экран смерти (WSOD) можно диагностировать тремя способами с помощью Laravel 4.
Вариант 1: Перейдите в свои журналы Laravel (приложение/хранилище/журналы) и посмотрите, содержится ли там ошибка.
Вариант 2: Перейдите к журналам сервера PHP и найдите ошибку PHP, вызывающую WSOD
Вариант 3: Хорошие старые навыки отладки - добавьте команду die ('hello') в начале вашего файла маршрутов - затем продолжайте перемещать ее все глубже и глубже в ваше приложение, пока вы больше не увидите сообщение "привет". Используя это, вы сможете сузить линию, вызывающую ваш WSOD, и устранить проблему.
Ответ 2
У меня возникла проблема с белым экраном после установки нового экземпляра laravel. Я не мог найти ничего в журналах, потому что (в конце концов я узнал), что причиной белого экрана было то, что приложение/хранилище не было доступно для записи.
Чтобы получить сообщение об ошибке на экране, я добавил следующее в public/index.php
try {
$app->run();
} catch(\Exception $e) {
echo "<pre>";
echo $e;
echo "</pre>";
}
После этого было легко решить проблему.
Ответ 3
Перейдите к
app/config/app.php
и
set 'debug' = > true,
Ответ 4
Следуя рекомендациям @The Shift Exchange, я просмотрел файл error_log и действительно смог решить проблему. это просто вопрос с разрешениями:
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
Как только я использовал chmod
для применения менее строгих разрешений, все вернулось к нормальному.
Однако я не уверен, что он отвечает на вопрос OP, поскольку он получал пустой экран, а не ошибку сервера.
Ответ 5
Внутренняя папка конфигурации app.php
Изменить
'debug' => false,
to
'debug' => true,
Ответ 6
В корневой папке Laravel chmod каталог хранения до 777
Ответ 7
Возможно, не на Laravel 4 на этот раз, но на L5.2 * У меня была аналогичная проблема:
Я просто изменил права собственности на каталог storage/logs
на www-data
с помощью:
# chown -R www-data:www-data logs
PS: Это на Ubuntu 15 и с apache.
Теперь мой каталог logs
выглядит следующим образом:
drwxrwxr-x 2 www-data www-data 4096 jaan 23 09:39 logs/
Ответ 8
https://github.com/loic-sharma/profiler, это хороший пример для альтернативы панели отладки laravel3.
Ответ 9
В дополнение к @cw24 answer & bull; с Laravel 5.4
вместо этого вы должны иметь следующую поправку в public/index.php
try {
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
} catch(\Exception $e) {
echo "<pre>";
echo $e;
echo "</pre>";
}
И в моем случае я забыл запустить MySQL.
Что, кстати, обычно mysql.server start
в терминале
Ответ 10
Просто перейдите к app/storage/logs
доступным журналам error
. Перейдите к имени файла сегодняшнего дня, и вы найдете в своем приложении последние error
.
ИЛИ
Откройте app/config/app.php
и измените настройку
'debug' => false,
To
'debug' => true,
ИЛИ
Перейдите в файл .env
к вашему приложению и измените конфигурацию
APP_LOG_LEVEL=debug