在dev env中app/cache/dev/sessions/sess_{session_id}
文件中的Symfony存储会话。该文件的内容类似于:
_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
。
我怎样才能解冻这个?
答案 0 :(得分:0)
您可以使用标准的PHP会话机制。您需要设置存储会话的目录(app/cache/dev/sessions
)。然后调用标准函数session_start()
将使用适当文件中的所有反序列化数据填充$_SESSION
变量。
例如,您可以使用此代码:
ini_set('session.save_handler', 'files');
ini_set('session.save_path', 'path/to/your/site/folder/app/cache/dev/sessions');
session_start();
当您需要使用Symfony框架后面的会话时(如OP所需),可以使用上述方法。要使用Symfony的会话机制,您应该使用Session
对象来提供所有需要的信息:
use Symfony\Component\HttpFoundation\Session\Session;
$session = new Session();
$session->start();
$session->all(); // will return unserialized array of parameters
答案 1 :(得分:0)
您可以通过分解和删除有效的不可序列化字符串之前的 _something|
(和类似的起始“标签”)来反序列化它。例如:
_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;
你可以把它变成:
a:0:{}
a:0:{}
a:3:{s:1:"u";i:1396424236;s:1:"c";i:1396360957;s:1:"l";s:1:"0";}
i:222;
b:1;
并且您应该能够独立地将 unserialize() 应用于生成的 5 个字符串。