12

Laravel 4.0 をインストールしたところ、このエラーが発生しました

ErrorException SessionHandler::read(): セッション ID が長すぎるか、無効な文字が含まれています。有効な文字は、az、AZ、0-9、および '-,' です。 return (bool) $this->handler->close(); /** * {@inheritdoc} / public function read($id) { return (string) $this->handler->read($id); } / *

4

3 に答える 3

44

同じマシンに Laravel 3 がインストールされていますか? デフォルトでは、Laravel 4 は同じセッション Cookie 名 (Laravel 3 と同じ) を使用し、現在は /app/config/session.php ファイルにあります。変更するだけです:

'cookie' => 'laravel_session',

に、例えば

'cookie' => 'laravel_session_4',

ブラウザを更新します。すべてが今すぐ動作するはずです。

于 2013-06-05T14:35:03.723 に答える
11

Cookie が破損している可能性があります。ブラウザの Cookie をクリアしてみてください。

この議論を見てください: https://stackoverflow.com/a/16318456/1563189

特に:

そもそも PHPSESSID に不正な文字が含まれるのはどうすればよいのでしょうか? それらは PHP によって自動的に生成されませんか? — 10 年Lèse majesté7 月 6 日 11:57

それらはそうですが、生成されたセッション ID にリンクする Cookie はクライアント側です。その Cookie が無効な形式に変更された場合 (誰かが何かを悪用しようとしている場合)、PHP はそれに気づきます。— Aleksey Korzun9 月 6 11 〜で 19:56

于 2013-05-29T18:55:06.363 に答える
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(); 
}
于 2014-12-02T10:59:51.750 に答える