2014-04-01 56 views
0

我嘗試瞭解Symfony如何隔離應用程序的SESSION值。 我創建兩個文件: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,我得到同樣的會議在這​​兩個文件:

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個文件相互會話值?

回答

1

Symfony默認使用NativeFileSessionHandler,並且此存儲中的所有數據不會在其他系統中使用。

至於解決方案,您可以創建本地會話處理程序作爲服務(類中已存在的Symfony/HttpFoundation包),並設置該處理程序配置framework.session.handler_id

欲瞭解更多信息,可以在docs

+0

感謝見諮詢! 'NativeFileSessionHandler'怎麼樣?我可以簡單地在另一個系統中使用它來創建自己的處理程序嗎? –

+1

是的。 Symfony中的'NativeFileSessionHandler'可以將會話寫入文件,並實現SessionHandlerInterface(在PHP Core中)。 – ZhukV

+0

我需要使用Symfony Session組件嗎?我是否可以在不使用此組件的情況下反序列化會話,僅使用'SessionHandlerInterface'和本機PHP? –

相關問題