2015-02-24 145 views
1

我在一个项目中使用laravel会话(4.2)真的很不愉快。 每次重新加载它会生成一堆会话文件(它被配置为文件的情况下)或数据库行(每个请求的aprox。20行/文件),我无法弄清楚原因。以下是我已经采取了尝试解决这个动作:Laravel会话问题:多个会话ID

1)我检查我的php.ini和的session.gc_maxlifetime是1440

2)我检查了,有没有在脚本中尽早打印。

3)我检查过composer dump-autoload没有解决问题。

4)我已经检查过本地PHP会话是否正常并且持续存在。

5)我用laravel迁移来生成会话表(所以它不是列类型的问题)。

6)我已经删除了我的供应商文件夹和锁定文件并执行了作曲家安装。

事情是,我昨天回家,拉了一个新的laravel项目,会议工作得很好。到底会发生什么? 为了澄清,我有一个控制器的动作: public function getIndex() { var_dump(Session::getId()); Session::save(); session_start(); var_dump(session_id()); die('die'); }

它打印:

string '4505ed48069f6c468c5d3a3c1c6e6094db8d989d' (length=40) 
string 'b24gbst01gdulo77o4utfq6id2' (length=26) 
die 

当刷新PHP自身的会话ID保持,但每次laravel ID不同。

这是我laravel session.php文件:

'driver' => 'file', 
'lifetime' => 120, 
'expire_on_close' => false, 
'files' => storage_path().'/sessions', 
'connection' => 'mysql', 
'table' => 'sessions', 
'lottery' => array(1, 1000), 
'cookie' => 'laravel_session', 
'path' => '/', 
'domain' => 'mydomain', 
'secure' => false, 

任何提示?

回答

1

由于无法理解的原因,Laravel避免使用本机php会话实现。

因此,在laravels会话和php本地会话之间不匹配的会话标识可以安全地忽略。

我看到过类似的问题,通常通过删除浏览器cookie /会话缓存并重新启动浏览器来解决。 (是的,这是在2015年,我们正在这样做,上帝帮助我们。)

+0

谢谢你的回复,但它并没有解决这个问题。 我不想在会话ID(laravel和php)之间寻求平等。我的问题是Laravel会话ID在每次请求时都会刷新,因此我无法生成有状态的操作。虽然,我通常可以使用php本地会话来完成。 此外,这是一个跨计算机的关注,因为当我部署我的应用程序服务器时,laravel会话保持在重装耳目一新。 – 2015-03-10 12:07:03

+0

我注意到了同样的问题,但我从未找到解决方案。 有时删除浏览器cookie数据并重新启动浏览器有帮助。 但首先,请检查您已经阅读了会话路径/写权限。 – mhughes 2015-03-13 17:18:19