我有 2 个服务器在运行, 一个用于动态内容(nginx、php) 另一个用于登录(apache2、php)
我使用内存缓存来共享 session 信息
我升级了服务器软件,此后 apache 中的 session 数据被加密
Apache :
session::write("sessions/s53mqdhghmlrvnvjt05novt4m2","加密数据",0,1440)
nginx:
session::write("sessions/s53mqdhghmlrvnvjt05novt4m2","test|i:1;",0,1440)
在两台服务器上,session-id 是相同的,并且 session cookie 仍然传递 sessionId,因此一切仍然正常工作
两台服务器使用完全相同的 php.ini
我查看了 ssl conf,但我找不到任何可以将 session 数据设置为加密的东西
任何人都知道我在哪里可以阻止 session 数据在 apache/mod_ssl 上被加密
编辑:
好吧,我找到了一个有效的解决方案,但我仍然没有找到问题的根源
我知道 session 数据必须离开 php 进程由 mod_ssl 加密
session 保存处理程序在脚本结束后由 php 在清理操作中调用。
但是文档中没有记录这种行为。
目前的解决方案是不保存 php 在 session::write 中提供的数据,而是使用 session_encode() 再次生成 session 哈希并保存
对于那些确实知道如何以及为什么我真正想知道关闭加密数据的指令的阅读本文的人。
最佳答案
如果你像我一样加载了 suhosin 模块,它可能是问题的根源。您可以通过在 suhosin ini 文件中将 suhosin.session.encrypt 设置为 off 来完全禁用它或关闭 session 加密。
关于php加密的ssl session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969792/