我有两台服务器可用于故障转移。数据库被复制(MySQL)作为主控,这样,每台服务器运行一个完整堆栈的副本。当我在一台服务器上时,我看到session表得到更新,在检查请求之后,我看到相同的PHPSESSID被发送。但是,当我更改url或故障转移到辅助计算机时,会话将被终止,我必须重新登录。
在辅助服务器上发送相同的PHPSESSID值,但无法识别会话。Apache/PHP是否将会话链接到那个特定的框?如果是,我如何让他们识别数据库中已经存在的会话?

最佳答案

注意:从“编辑”移到“答案”标记为“已回答”
实际上找到了解决办法。“问题”是用于保护PHP安装的Suhosin补丁。Suhosin支持基于crypt密钥以及应用程序的DocRoot加密会话数据的可配置选项,因为故障转移服务器具有不同的DocRoot,所以不可能读取加密数据。
我编辑suhosin.ini以添加共享密钥,并关闭DocRoot加密选项,会话按预期共享。
解决方案通过:http://rommelsantor.com/clog/2011/02/06/php-shared-session-encoding-solution/

08-08 08:04
查看更多