我一直在使用memcached作为session.save_handler一段时间,一切都正常工作。
然后我尝试:
echo $mycache->get('memc.sess.key.o8el2bgk4k9s1mr723j1blrgs3');
获取其中一个会话,输出非常奇怪(一个包含108个字符的字符串):
MaiiA6iX7qlS0IZjTdr2I3w4axNTp7H2IYcH-SAficGw5ZKIcMQ0BE2kFnsm4xHMk3KAJo9kOwmRTSBOPdPAC-m5L9CkWnYPONqujt5m0c8.
这个字符串是什么格式的?有关您的信息,这是phpinfo()中的memcached配置:
所以应该采用这种格式:
user_name|s:5:"guest";user_id|s:1:"3";user_level|s:2:"-1";
而不是奇怪的字符串。
注意:我使用的是memcached + php-memcached。不是memcache,而不是php-memcache。感谢。
答案 0 :(得分:2)
我找到了罪魁祸首! suhosin.session.encrypt。
P.S。我直接从memcached获取数据,因为我正在测试WebSocket,并且必须使用JS手动传递会话ID。然后我需要自己获取该ID的会话变量:D
答案 1 :(得分:1)
PHP会话使用自己的函数进行编码/解码 - 请参阅session_decode。