Intereting Posts
Каков наилучший способ хранения динамических настроек в php? почему mysql_fetch_array () ожидает, что параметр 1 будет ресурсом? почему ресурс не является параметром 1? Android, JSONObject не может быть преобразован в JSONArray Отправка почты на локальный почтовый сервер – «SENT: 550 Недопустимый адрес». PHPMailer Скрыть аутентификацию SMTP? Symfony и Doctrine – не могут удалить элемент из коллекции (отношение Many-to-Many с дополнительным полем) Как получить идентификатор выбранного элемента таблицы в php Простой шаблон HTML DOM в атрибуте передача переменных поставщику услуг laravel Локатор сервисов, Инъекция зависимостей (и контейнера) и инверсия управления Как форматировать числовую строку с помощью C.Gridview – Yii Многомерный массив в строку DOM для разбора стены Facebook Допустимо ли распространять функции библиотеки PHP исключительно для изменения имен? Получите ошибку при использовании skyscanner Api из расчета полет в php

Laravel 5 – сеанс не работает

Вот config/session.php :

 return [ 'driver' => 'file', 'files' => storage_path().'/framework/sessions', ]; 

Мои storage/framework/sessions имеют 755 разрешений.

Когда я помещаю эти 2 строки в свой контроллер

 Session::set('aa', 'bb'); dd(Session::get('aa')); 

Я получаю ожидаемый вывод "bb" . Но если я прокомментирую первую строку:

 // Session::set('aa', 'bb'); dd(Session::get('aa')); 

и обновить страницу, я все еще ожидаю "bb" но получаю null .

Кроме того, storage/framework/sessions пустые.

Что мне нужно сделать для работы сеанса?

Solutions Collecting From Web of "Laravel 5 – сеанс не работает"

Laravel 5 обрабатывает сеансы через класс промежуточного ПО StartSession . Что еще более важно, это промежуточное ПО представляет собой TerminableMiddleware а код, который фактически сохраняет данные (в вашем случае для файла сеанса), находится в методе terminate , который запускается в конце жизненного цикла запроса:

 public function terminate($request, $response) { if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions()) { $this->manager->driver()->save(); } } 

При вызове dd(Session::get('aa')); запрос прерывается до того, как может быть вызван метод завершения промежуточного программного обеспечения.

Как ни странно, документальная документация Laravel Middleware фактически объясняет логику Terminable Middleware, предоставив промежуточное ПО Laravel StartSession в качестве примера:

Например, промежуточное программное обеспечение «сеанс», включенное в Laravel, записывает данные сеанса в хранилище после того, как ответ отправлен в браузер.

При этом попробуйте использовать var_dump() вместо использования dd() .