Php 如何从文件中取消序列化Symfony会话?

Php 如何从文件中取消序列化Symfony会话?,php,session,symfony,serialization,Php,Session,Symfony,Serialization,Symfony将会话存储在dev env的app/cache/dev/sessions/sess{session\u id}文件中。文件的内容类似于: _sf2_attributes|a:0:{}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:"u";i:1396424236;s:1:"c";i:1396360957;s:1:"l";s:1:"0";}bbb|i:222;IsAuthorized|b:1; 当我尝试使用unserialize()函数取消序列化时,我得

Symfony将会话存储在dev env的
app/cache/dev/sessions/sess{session\u id}
文件中。文件的内容类似于:

_sf2_attributes|a:0:{}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:"u";i:1396424236;s:1:"c";i:1396360957;s:1:"l";s:1:"0";}bbb|i:222;IsAuthorized|b:1;
当我尝试使用
unserialize()
函数取消序列化时,我得到
FALSE


我怎样才能解除这个问题?

您可以使用标准的PHP会话机制。您需要设置存储会话的目录(
app/cache/dev/sessions
)。然后调用标准函数
session\u start()
将使用相应文件中所有未序列化的数据填充
$\u session
变量

例如,您可以使用以下代码:

ini_set('session.save_handler', 'files');
ini_set('session.save_path', 'path/to/your/site/folder/app/cache/dev/sessions');
session_start();
当您需要在Symfony框架后面处理会话时(根据操作需要),可以使用上述方法。要使用Symfony的会话机制,您应该使用
session
对象,该对象将为您提供所有需要的信息:

use Symfony\Component\HttpFoundation\Session\Session;

$session = new Session();
$session->start();

$session->all(); // will return unserialized array of parameters

symfony本身提供序列化和非序列化,如果您试图在不取消序列化的情况下获取内容,该怎么办?我尝试在框架后面使用此symfony会话,并且我需要获得
IsAuthorized
value我更新了我的答案以提供示例。你所需要的一切都可以在这里找到:谢谢!我会理解这是完全错误的答案,没有直接回答如何取消Symfony会话内容的序列化,也使用了Symfony的不良做法。@GrzegorzTomasiak,你完全正确。但OP还有另一个问题:他不想使用Symfony组件来处理会话。他只是需要一种通用的方式来处理使用Symfony而不是使用Symfony的会话。但是我更新了我的答案以避免混淆其他人。但是我想知道如何取消symfony会话数据的序列化