【发布时间】:2016-04-13 21:33:39
【问题描述】:
我刚刚安装了 Laravel 5.2。我进入我的项目几个小时,我注意到会话不会跨路线持续存在。在表单上使用验证服务时,我首先注意到了这一点。 $error 变量在验证失败时为空。
我创建了两条简单的路线来重现该问题。代码如下。 Foo 路由加载会话,但 Bar 路由不加载。
-
Laravel.log为空。 -
sudo chmod -R 777设置在存储上 - 我试过数据库驱动和文件驱动。结果相同。
- 我已更新数据库以包含会话表更改(用户 ID 等)
php artisan cache:clearphp artisan config:clear- 使用文件驱动程序时,我看到会话文件存储在
storage/framework/sessions - 我有一份来自 5.2 存储库的
app/Http/Kernel.php的新副本
Routes.php
Route::group(['middleware' => ['web']], function () {
Route::get('foo','AuthController@foo');
Route::get('bar','AuthController@bar');
});
AuthController.php
namespace Zocial\Http\Controllers;
class AuthController extends Controller
{
public function foo()
{
\Session::put('user','testing');
//session( ['user' => 'testing'] ); not working either
return \Session::get('user');
}
public function bar()
{
return "Session here: " . \Session::get('user');
}
}
配置/session.php
return [
'driver' => env('SESSION_DRIVER', 'database'),
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => true,
'files' => storage_path('framework/sessions'),
'connection' => env('DB_CONNECTION','mysql'),
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'laravel_session',
'path' => '/',
'domain' => env('APP_DOMAIN', null),
'secure' => false,
];
【问题讨论】:
-
在使用文件驱动程序时,您是否看到会话文件正在
storage/framework/sessions目录中创建? -
你安装了新的 Laravel 5.2 应用还是从以前的版本进行了更新?
-
您能否确保您拥有有效的
app/Http/Kernel.php文件结构?默认是github.com/laravel/laravel/blob/master/app/Http/Kernel.php -
这个问题有什么解决办法吗?我也面临同样的问题。
-
我从头开始创建了一个新的 Laravel 5.2 产品,并将一个模块一个模块地复制到新项目中,现在有了一个带有工作会话的复制项目。我从来没有弄清楚根本原因。
标签: php laravel laravel-5.2