Laravel 5 - локальная отладка env true ошибки не отображаются
Я пытаюсь включить отладку для моего приложения, но похоже, что у меня нет отзывов.
Среда настроена на локальную (в файле.env), и если я запустите
php artisan env
Я понял
Current application environment: local
Конфигурация отладки для моего локального env установлена в true
return [
'debug' => true,
Также, если я установлю в своем основном конфигурационном файле (app.php внутри папки config) debug = true
У меня еще есть отзывы о том, что в коде есть ошибка.
У меня есть только пустая страница, если в коде есть ошибка (как для debug = false)
Что мне не хватает?
13 ответов
Я работал над этим вопросом chmod -R 777 storage/
на моем хост-компьютере (Mac OS X). На моей гостевой машине (Ubuntu 14.04) chmod -R 777 storage/
не менял разрешения на самом деле.
php artisan optimize
и если он все еще не работает, удалите файл storage/meta/compiled.php
как уже упоминалось в теме форума на Laracasts
У меня была такая же проблема и artisan
Команда сделала свое дело.
ОБНОВИТЬ
Я обнаружил, что хороший способ обойти проблемы, связанные с папками хранилища, - установить www-data в качестве его владельца. Я использую две команды:
sudo chown $(whoami):www-data . -R
а также
sudo chown www-data: storage -R
Начиная с Laravel 5.1, может потребоваться выполнить эту последнюю команду и в папке начальной загрузки.
У меня была ситуация, когда у меня был точно такой же симптом, некоторые маршруты не давали никакой обратной связи, просто белая страница, никаких ошибок в журнале, никакой информации вообще.
Оказывается, я добавлял новое промежуточное ПО, и я забыл вернуться $next($request)
из моего метода ручки. Это было еще более неприятно, потому что это промежуточное программное обеспечение не применимо к каждому маршруту, поэтому я предположил, что возникла периодическая ошибка, которая генерировалась, но не отображалась на этих маршрутах.
Как сказал Блэр, может оказаться, что вы вставили какой-то неправильный код в промежуточное ПО или в "Exceptions/Handler.php", например:
if($e->getStatusCode()===404) { ... }
вместо
if($e instanceof NotFoundHttpException) { ... }
Также, если вы только что установили lumen, убедитесь, что вы переименовали .env.example
в .env
в вашем главном каталоге приложения, так как он не будет работать, если ваш конфигурационный файл все еще называется. .env.example
,
Даже на Windows нужно сделать: chmod -R 777 storage/
Вы можете запустить его с помощью Git Bash;
Просто для полноты, у меня была эта проблема, когда ошибка произошла в методах, которые использовали Model::findOrFail($someId)
, Заменить его на Model::find($someId)
отображается журнал ошибок.
Я на самом деле решил проблему, откомментировав строку Dotenv::load(__DIR__.'/../');
в bootstrap/app.php
,
Так что он на самом деле загружает его перед компиляцией и кэшированием,
хорошо работает php artisan optimize
делает это для вас, если у вас есть Laravel (не Lumen)
Но если вы посмотрите на их документацию, она закомментирована по умолчанию, я думаю, что они, возможно, уже исправили ее http://lumen.laravel.com/docs/installation.
Перейдите в config/app.php и, если это так:
'debug' => env ('APP_DEBUG', false),
Тогда это изменится на:
'debug' => env ('APP_DEBUG', true),
этот.
Для меня то, что отлично работало, это отключение hhvm в файле Homestead.yaml, затем я сделал vagrant reload --provision и все!
Пожалуйста, проверьте файл .env
APP_ENV=local
APP_DEBUG=true
а также в config/app.php проверьте эти значения
'env' => env('APP_ENV', 'local'),
'debug' => true,
Я столкнулся с той же проблемой, поэтому я проверил файл handler.php папки исключений, где прокомментирована функция рендеринга, которая имеет строку возвращаемого значения, поэтому страница становится пустой.
public function render($request, Exception $exception)
{
//return parent::render($request, $exception);
}
Если приведенные выше ответы не помогли вам, вы можете проверить конфигурационные файлы, которые вы могли изменить, и начать отладку оттуда.
В моем случае вышеупомянутые решения не работали для меня, потому что основной причиной моей проблемы было изменение часового пояса в файле config/app.php (с UTC по умолчанию для laravel, я изменил его на EST5EDT). По какой-то причине изменение настроек часового пояса не позволяет laravel регистрировать ошибки в папке хранилища, и я получаю пустой экран (нет сообщения об ошибке!). Вместо этого я изменил часовой пояс на America/New_York, и журналы ошибок снова работают.
Надеюсь это поможет.