我试着理解Symfony如何隔离应用程序的SESSION值。 我创建了两个文件:
// test.php
session_start();
$_SESSION['aaa'] = 111;
var_dump($_SESSION);
和
// test2.php
session_start();
var_dump($_SESSION);
所以当我拨打http://localhost/test.php
然后拨打http://localhost/test2.php
时,我会在两个文件中获得相同的SESSION:
array(1) { ["aaa"]=> int(111) }
但是当我添加到symfony前端控制器app_dev.php
的末尾时,下一个代码:
var_dump($_SESSION);
并尝试调用http://localhost/app_dev.php
- 我只获得Symfony会话
array(3) { ["_sf2_attributes"]=> &array(0) { } ["_sf2_flashes"]=> &array(0) { } ["_sf2_meta"]=> &array(3) { ["u"]=> int(1396360435) ["c"]=> int(1396360433) ["l"]=> string(1) "0" } }
我无法访问我期望的array(1) { ["aaa"]=> int(111) }
值。
为什么呢?如何使用这3个文件进行相互会话值?
答案 0 :(得分:1)
Symfony默认使用NativeFileSessionHandler
,并且在其他系统中不会预期此存储中的所有数据。
作为解决方案,您可以将本机会话处理程序创建为服务(Symfony / HttpFoundation包中已存在类)并将此处理程序设置为配置framework.session.handler_id
有关详细信息,请参阅docs