Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.02.2017 16:04:13

На сервере выскакивает ошибка Session

На сервере в лог сыпет такая ошибка:

[2017-02-01 13:01:50] local.ERROR: exception 'RuntimeException' with message 'Session store not set on request.' in /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Http/Request.php:870
Stack trace:
#0 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Http/Request.php(545): Illuminate\Http\Request->session()
#1 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(501): Illuminate\Http\Request->old('name', NULL)
#2 /home/u470042/new.anapa-rodnik.com/www/storage/framework/views/f0afccc975c73b51e2d30ecbcb71e478e87fb2bb.php(9): old('name')
#3 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(42): include('/home/u470042/n...')
#4 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/home/u470042/n...', Array)
#5 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(149): Illuminate\View\Engines\CompilerEngine->get('/home/u470042/n...', Array)
#6 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(120): Illuminate\View\View->getContents()
#7 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(85): Illuminate\View\View->renderContents()
#8 /home/u470042/new.anapa-rodnik.com/www/storage/framework/views/5578dc696675b17ca7ea4d38aa7117c5b4537ed8.php(21): Illuminate\View\View->render()
#9 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(42): include('/home/u470042/n...')
#10 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/home/u470042/n...', Array)
#11 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(149): Illuminate\View\Engines\CompilerEngine->get('/home/u470042/n...', Array)
#12 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(120): Illuminate\View\View->getContents()
#13 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(85): Illuminate\View\View->renderContents()
#14 /home/u470042/new.anapa-rodnik.com/www/storage/framework/views/ad1ea80fc83c66943315e9c603a3b7ea3fc944a7.php(38): Illuminate\View\View->render()
#15 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(42): include('/home/u470042/n...')
#16 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/home/u470042/n...', Array)
#17 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(149): Illuminate\View\Engines\CompilerEngine->get('/home/u470042/n...', Array)
#18 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(120): Illuminate\View\View->getContents()
#19 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(85): Illuminate\View\View->renderContents()
#20 /home/u470042/new.anapa-rodnik.com/www/storage/framework/views/482388eb7aa8285519b5314b2c2be088f4c0b8b2.php(12): Illuminate\View\View->render()
#21 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(42): include('/home/u470042/n...')
#22 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/home/u470042/n...', Array)
#23 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(149): Illuminate\View\Engines\CompilerEngine->get('/home/u470042/n...', Array)
#24 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(120): Illuminate\View\View->getContents()
#25 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/View/View.php(85): Illuminate\View\View->renderContents()
#26 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Http/Response.php(53): Illuminate\View\View->render()
#27 /home/u470042/new.anapa-rodnik.com/www/vendor/symfony/http-foundation/Response.php(201): Illuminate\Http\Response->setContent(Object(Illuminate\View\View))
#28 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(57): Symfony\Component\HttpFoundation\Response->__construct(Object(Illuminate\View\View), 404, Array)
#29 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(71): Illuminate\Routing\ResponseFactory->make(Object(Illuminate\View\View), 404, Array)
#30 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(156): Illuminate\Routing\ResponseFactory->view('errors.404', Array, 404, Array)
#31 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(113): Illuminate\Foundation\Exceptions\Handler->renderHttpException(Object(Symfony\Component\HttpKernel\Exception\NotFoundHttpException))
#32 /home/u470042/new.anapa-rodnik.com/www/app/Exceptions/Handler.php(56): Illuminate\Foundation\Exceptions\Handler->render(Object(Illuminate\Http\Request), Object(Symfony\Component\HttpKernel\Exception\NotFoundHttpException))
#33 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(80): App\Exceptions\Handler->render(Object(Illuminate\Http\Request), Object(Symfony\Component\HttpKernel\Exception\NotFoundHttpException))
#34 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(54): Illuminate\Routing\Pipeline->handleException(Object(Illuminate\Http\Request), Object(Symfony\Component\HttpKernel\Exception\NotFoundHttpException))
#35 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(44): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#36 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(136): call_user_func_array(Array, Array)
#38 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#39 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#40 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#41 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#42 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(132): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#43 /home/u470042/new.anapa-rodnik.com/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(99): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#44 /home/u470042/new.anapa-rodnik.com/www/public/index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#45 {main}

route:list говорит что middleware => web прописан для всех маршрутов, Сессии работают, но логи засоряются вот такой ерундой. При чем на локалке такого нет.

Не в сети

#2 01.02.2017 17:23:35

Re: На сервере выскакивает ошибка Session

что прописано в качестве SESSION_DRIVER в .env?

Не в сети

#3 01.02.2017 17:25:40

Re: На сервере выскакивает ошибка Session

constb пишет:

что прописано в качестве SESSION_DRIVER в .env?

file

Не в сети

#4 01.02.2017 17:38:21

Re: На сервере выскакивает ошибка Session

ну во-первых, в стек-трейсе нет миддлварь, характерных для web – видимо какие-то из них отключены или ошибка произошла до того как они сработали. судя по NotFoundException – маршруты не загрузились вообще и запрос сразу ушёл на ошибку 404. затем при рендере шаблона ошибки (видимо errors/404.blade.php) произошла ошибка, но не в самом шаблоне, а видимо в инклюде, который включен из лейаута (три вложенных срабатывания шаблонизатора, полагаю 404 -> layout -> include) при попытке вызова old('name') – видимо форма авторизации или регистрации. ошибка из-за того что не загружена сессия – на 404й и прочих ошибках никакие миддлвари не выполняются.

надо начинать с причины почему маршрут не был распознан, а затем – исправить шаблон формы авторизации/регистрации чтобы не пытался вызывать old() на маршрутах, где нет сессии. или вообще не рендерить лейаут на 404й ошибке, а отрисовать шапку прямо в самом шаблоне 404 (кстати ларавель по умолчанию именно так и делает)

Не в сети

#5 16.02.2017 11:22:20

Re: На сервере выскакивает ошибка Session

constb пишет:

ну во-первых, в стек-трейсе нет миддлварь, характерных для web – видимо какие-то из них отключены или ошибка произошла до того как они сработали. судя по NotFoundException – маршруты не загрузились вообще и запрос сразу ушёл на ошибку 404. затем при рендере шаблона ошибки (видимо errors/404.blade.php) произошла ошибка, но не в самом шаблоне, а видимо в инклюде, который включен из лейаута (три вложенных срабатывания шаблонизатора, полагаю 404 -> layout -> include) при попытке вызова old('name') – видимо форма авторизации или регистрации. ошибка из-за того что не загружена сессия – на 404й и прочих ошибках никакие миддлвари не выполняются.

надо начинать с причины почему маршрут не был распознан, а затем – исправить шаблон формы авторизации/регистрации чтобы не пытался вызывать old() на маршрутах, где нет сессии. или вообще не рендерить лейаут на 404й ошибке, а отрисовать шапку прямо в самом шаблоне 404 (кстати ларавель по умолчанию именно так и делает)

Спасибо, помогло. Вот только как Вы из этой белеберды трейса ошибок все это выяснили я ума не приложу))

Не в сети

#6 16.02.2017 12:54:43

Re: На сервере выскакивает ошибка Session

Спасибо, помогло. Вот только как Вы из этой белеберды трейса ошибок все это выяснили я ума не приложу))

благодаря навыкам телепатии и ясновидения конечно же )

на самом деле трейс читается снизу вверх. я примерно представляю себе что там должно быть и глаз сразу цепляет что за CheckForMaintenanceMode (стандартная миддлварь) сразу идёт NotFoundHttpException – это значит 404. дальше в трейсе только обработка 404. эта обработка, если приглядеться – содержит 4х-кратный вызов Blade-движка (CompilerEngine). то есть не один шаблон целиком в одном файле а набор лейаутов и инклюдов. и на самом верху – Illuminate\Http\Request->old('name', NULL) и сразу за ним ошибка Session store not set on request. это логично – ведь в стеке вызовов была только миддлварь CheckForMaintenanceMode, а той что добавляет сессию в реквест – не было. значит на 404 нет сессии в ларавеле, это довольно неприятно, я не знал о такой особенности, но с другой стороны вроде вполне ожидаемо. а поскольку программеры любят подключать лейаут с шапкой с авторизацией и формой регистрацией в попапе на все страницы, логично что у тебя такая же и на 404 тоже подключена. вот и всё объяснение

Не в сети

Подвал раздела