我在有共享文件夹的vagrant上运行Symfony应用程序。
问题是,对于我的队友,他们提供流浪汉后一切正常,但我无法登录。
经过一番调查后,我得出结论,这是一个失败的会议。 我正在使用标准配置进行会话。
我已成功通过身份验证,但重定向后,会话值不再存在。
使用xdebug我确认身份验证效果很好我得到身份验证为真的令牌, 在访问日志中,我可以看到在login_check之后,下一个请求是登录用户的主页,但我被重定向回登录页面,因为我不再进行身份验证。
我已经检查了缓存目录,在那里创建了文件,无论如何都给了它777。
当一切运作良好但我发生同样的事情时,我试图在一些旧的本地分支上重新创建流浪汉。
我删除了vagrant和VirtualBox并安装了最新版本,再没有运气。
我是唯一一个受影响的人,我的同事可以结账主人,流浪汉,这对他们有用。
同样的事情发生在不同的浏览器中。我最近做的其他改变是操作系统升级到Yosemite(osx)
知道在哪里寻找原因吗?
答案 0 :(得分:0)
所以最后我通过将会话处理程序设置为默认的php.ini
来解决它在config.yml
中 session:
handler_id: ~
由于流浪汉共享文件夹存在竞争条件
来自:https://github.com/symfony/symfony/issues/7885
共享的vagrant文件夹必须进行大量的同步并且很多 比VM上的其他文件夹慢。我想会发生什么 Symfony记录用户,写入会话文件然后去读取 会话文件,它还没有(因为文件夹很慢)。在 这一点Symfony失去了会话,用户是有效的 退出了。将会话缓存移动到更快的文件夹修复了 问题,因为当Symfony期望它时文件就在那里。对我来说是 实际上在具有SSD(更快的IO)的计算机上工作并且失败了 电脑与传统硬盘。 SSD的速度足够快 支持缓存到共享文件夹,但硬盘驱动器无法跟上。 将缓存移到共享文件夹之外会修复它。