Installation 会话id太长或在Laravel 4中包含非法字符

Installation 会话id太长或在Laravel 4中包含非法字符,installation,laravel,laravel-4,Installation,Laravel,Laravel 4,我安装了Laravel4.0,但出现了这个错误 错误例外 SessionHandler::read():会话id太长或包含非法字符,有效字符为a-z、a-z、0-9和“-、” return(bool)$this->handler->close(); } /** *{@inheritardoc} / 公共函数读取($id) { 返回(字符串)$this->handler->read($id); } /* 这可能是因为你有一个损坏的cookie。尝试清除浏览器中的Cookie 请看下面的讨论: 特别

我安装了Laravel4.0,但出现了这个错误

错误例外 SessionHandler::read():会话id太长或包含非法字符,有效字符为a-z、a-z、0-9和“-、” return(bool)$this->handler->close(); } /** *{@inheritardoc} / 公共函数读取($id) { 返回(字符串)$this->handler->read($id); } /*


这可能是因为你有一个损坏的cookie。尝试清除浏览器中的Cookie

请看下面的讨论:

特别是:

首先,如何在PHPSESSID中使用非法字符?它们不是由PHP自动生成的吗<代码>圣母院2010年7月6日11:57

它们是,但将您链接到生成的会话id的cookie是客户端。如果cookie更改为无效格式(有人试图利用某个漏洞),PHP会注意到它
Aleksey Korzun
2011年9月6日19:56


您是否在同一台机器上安装了Laravel 3?默认情况下,Laravel4使用相同的会话cookie名称(与Laravel3相同),现在可以在/app/config/session.php文件中找到。简单更改:

'cookie' => 'laravel_session',
到,例如

'cookie' => 'laravel_session_4',

并刷新浏览器。现在一切都可以正常工作了。

此问题有错误报告()

您可以检查会话启动是否成功,并根据需要生成id:

$ok = @session_start();
if(!$ok){
session_regenerate_id(true); // replace the Session ID
session_start(); 
}

您是否有本地运行的Laravel 3安装。我确实看到了这个问题,可能就是这样。请注意,默认情况下,Laravel 3和Laravel 4都使用相同的cookie名称“Laravel_会话”。这对我来说很有效,我认为这是一个更通用的自动修复此类问题的方法,无论它们是如何发生的。