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

时间:2013-05-29 15:11:13

标签: installation laravel laravel-4

我安装了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);       }       / *

3 个答案:

答案 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(); 
}