我安装了Laravel 4.0并出现了此错误
ErrorException SessionHandler :: read():会话ID太长或包含非法字符,有效字符是a-z,A-Z,0-9和' - ,' return(bool)$ this-> handler-> close(); } / ** * {@inheritdoc} / 公共函数读取($ id) { return(string)$ this-> handler-> read($ id); } / *
答案 0 :(得分:42)
您是否在同一台机器上安装了Laravel 3?默认情况下,Laravel 4使用相同的会话cookie名称(如Laravel 3),现在位于/app/config/session.php文件中。只需更改:
'cookie' => 'laravel_session',
to,例如
'cookie' => 'laravel_session_4',
并刷新浏览器。一切都应该现在就可以了。
答案 1 :(得分:11)
可能是你有一个腐败的cookie。尝试在浏览器中清除Cookie。
看一下这个讨论:https://stackoverflow.com/a/16318456/1563189
特别是:
你最初如何在PHPSESSID中使用非法字符?它们不是由PHP自动生成的吗? -
Lèse majesté
2010年7月6日11:57它们是,但是将您链接到生成的会话ID的cookie是客户端。如果该cookie变为无效格式(某人试图利用某些东西),PHP会注意到它。 -
Aleksey Korzun
2011年9月6日19:56
答案 2 :(得分:2)
此问题有一个错误报告(https://bugs.php.net/bug.php?id=68063)
您可以检查session_start是否成功,并在需要时生成ID:
$ok = @session_start();
if(!$ok){
session_regenerate_id(true); // replace the Session ID
session_start();
}