Идентификатор сеанса слишком длинный или содержит недопустимые символы в Laravel 4
Я установил Laravel 4.0 и получил эту ошибку
ErrorException SessionHandler:: read(): идентификатор сеанса слишком длинный или содержит недопустимые символы, действительными символами являются a-z, A-Z, 0-9 и '-,' return (bool) $this- > handler- > close(); } /** * {@inheritdoc} / public function read ($ id) { return (string) $this- > handler- > read ($ id); } /*
Ответы
Ответ 1
У вас есть Laravel 3, установленный на той же машине? По умолчанию Laravel 4 использует то же имя cookie сеанса (как Laravel 3), которое теперь находится в файле /app/config/session.php. Просто измените:
'cookie' => 'laravel_session',
например,
'cookie' => 'laravel_session_4',
и обновите браузер. Теперь все должно работать.
Ответ 2
Возможно, у вас есть коррумпированный файл cookie. Попробуйте очистить файлы cookie в своем браузере.
Взгляните на это обсуждение: fooobar.com/questions/232570/...
Особенно:
Как вы в конечном итоге сталкиваетесь с незаконными символами в PHPSESSID? Разве они не генерируются PHP автоматически? - Lèse majesté
Июль 6 '10 в 11:57
Они есть, но cookie, который связывает вас с сгенерированным идентификатором сеанса, является клиентской. Если этот файл cookie изменится на недопустимый формат (кто-то пытается что-то использовать), PHP это заметит. - Aleksey Korzun
6 сен '11 в 19:56
Ответ 3
Для этой проблемы есть отчет об ошибке (https://bugs.php.net/bug.php?id=68063)
Вы можете проверить успех своего session_start и сгенерировать идентификатор, если необходимо:
$ok = @session_start();
if(!$ok){
session_regenerate_id(true); // replace the Session ID
session_start();
}