我有两台服务器在运行, 一个用于动态内容(nginx,php) 另一个用于登录(apache2,php)
我使用memcache来分享会话信息
我升级了服务器软件,从那时起apache中的会话数据被加密
阿帕奇:
会话::写( “会话/ s53mqdhghmlrvnvjt05novt4m2”, “加密数据”,0,1440)
nginx的:
会话::写( “会话/ s53mqdhghmlrvnvjt05novt4m2”, “测试| I:1;”,0,1440)
会话ID是相同的,会话cookie仍然通过sessionId,所以仍然可以像它一样工作
两个服务器都使用完全相同的php.ini
我查看了ssl conf但我找不到任何可以将会话数据设置为加密的内容
任何人都知道在哪里可以阻止会话数据在apache / mod_ssl上加密
修改
好吧,我发现了一个有效的解决方案,但我仍然发现了问题的根源
我知道会话数据必须让php进程由mod_ssl加密
在脚本结束后,php通过清理操作调用会话保存处理程序
但是文档中没有记录这种行为。
对于那些阅读本文的人,我知道如何以及为什么我真的想知道关闭加密数据的指令。
答案 0 :(得分:3)
如果你加载了suhosin模块,就像我一样,它可能是问题的根源。您可以通过在suhosin ini文件中将suhosin.session.encrypt设置为off来完全禁用它或关闭会话加密。
答案 1 :(得分:0)
会话数据存储在服务器上,而不是存储在会话cookie中。如果您阅读了cookie,您将看到它只是一个包含ID的字符串。默认情况下(简单地说),PHP通过序列化$ _SESSION数组并将其写入文件来存储会话数据。我不确定您要做的是在不同环境中共享会话信息。由于您提到了memcached,只需重新编写会话处理函数来读取和写入memcached。由于您将控制数据的存储方式,因此您可以存储或不存储数据。 以下是关于会议handeling功能的参考: