我有2台服务器正在运行,
一种用于动态内容(nginx,php)
另一个用于登录(apache2,php)
我使用内存缓存共享会话信息
我升级了服务器软件,此后对Apache中的会话数据进行了加密
阿帕奇:
session :: write(“ sessions / s53mqdhghmlrvnvjt05novt4m2”,“加密数据”,0,1440)
nginx:
session :: write(“ sessions / s53mqdhghmlrvnvjt05novt4m2”,“ test | i:1;”,0,1440)
在两台服务器上,会话ID相同,并且会话Cookie仍会传递sessionId,以便所有会话ID都应像
两个服务器使用完全相同的php.ini
我查看了ssl conf,但找不到任何可以将会话数据设置为加密的内容
任何人都知道我可以在apache / mod_ssl上阻止会话数据被加密的地方
编辑:
好吧,我找到了可行的解决方案,但我仍然发现问题的根源
我确实知道会话数据必须离开php进程才能由mod_ssl加密
脚本结束后,php将在清理操作中调用会话保存处理程序.
但是文档中没有记录这种行为.
解决方法是,暂时不保存php在session :: write提供的数据,而是使用session_encode()再次生成会话哈希并将其保存
对于那些确实知道如何以及为什么我真的想知道关闭加密数据指令的读者.
解决方法:
如果像我一样加载了suhosin模块,则可能是问题的根源.您可以通过将suhosin ini文件中的suhosin.session.encrypt设置为off来完全禁用它或关闭会话加密.