要复制:
全新安装。将以下内容放在Page :: init()。
中 var_dump(Session::get_all());
Session::set('testVariable', 'testValue');
访问网站上的页面,无需登录,也无需访问/ admin。
此预期结果(在加载页面两次之后)将看到包含testVariable => testValue
的会话数据转储
相反,似乎存储在会话中的任何数据都不会在请求之间保留。除非访问过/ admin。访问/ admin,然后再次检查...
当访问/ admin时会发生一些事情,会议将会话持续存在。
这在所有托管环境中似乎都不是问题...但是,我们测试过的3/4确实存在这个问题。其中两个运行PHP 5.4,另外两个运行PHP 5.6。
这似乎不是特定于任何SS版本的问题,我们已经测试过3.0.5,3.2,3.4.0
我已经在github上提交了一个issue反对silverstripe框架,但任何见解都很有价值,因为我们有一个网站在野外被打破,因为这个,任何线索/修复/补丁/黑客/解决方法会很棒。
答案 0 :(得分:1)
添加Session :: start();在其他会话调用之前。
答案 1 :(得分:0)
在Session::save()
后尝试Session::set()
。