【问题标题】:The session id is too long or contains illegal characters in Laravel 4会话 id 太长或包含 Laravel 4 中的非法字符
【发布时间】:2013-05-24 22:25:46
【问题描述】:

我安装了 Laravel 4.0 并收到此错误

错误异常 SessionHandler::read():会话id过长或包含非法字符,有效字符为a-z、A-Z、0-9和'-,' return (bool) $this->handler->close(); } /** * {@inheritdoc} / 公共函数读取($id) { 返回(字符串)$this->handler->read($id); } /*

【问题讨论】:

  • 你是否也有本地运行的 Laravel 3 安装。我确实看到这个问题出现了,可能就是这种情况。请注意,Laravel 3 和 Laravel 4 默认使用相同的 cookie 名称“laravel_session”。

标签: installation laravel laravel-4


【解决方案1】:

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

'cookie' => 'laravel_session',

到,例如

'cookie' => 'laravel_session_4',

并刷新浏览器。现在一切都应该工作了。

【讨论】:

    【解决方案2】:

    可能是您的 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

    【讨论】:

      【解决方案3】:

      有针对此问题的错误报告 (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(); 
      }
      

      【讨论】:

      • 这对我有用,我认为这是针对此类问题的更通用的自动修复,但是它们会发生。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 2011-03-12
      • 2014-12-11
      • 2011-06-13
      • 2020-02-19
      • 2015-12-30
      • 1970-01-01
      相关资源
      最近更新 更多