问题排查过程:
1、检查session配置

session type是redis存储,登陆redis查看是否已写入;
2、登陆redis后,发现数据库中有很多条session记录,明显写成功了,但为什么session_id会一直变呢?
3、查看浏览器请求响应数据

发现浏览器请求头里面没有cookie,这样就导致每次访问,服务器端都会去创建session,session_id就一直变。
4、在入口文件index.php中指定session存放路径: ini_set('session.cookie_path', '/index');
5、检查session配置:
发现:测试环境的域名是xxxx.com,我本地的域名是bbbb.cn, 代码搬到测试环境时session的domain没及时修改。这样浏览器每次请求xxxx.com时,session.domain还是bbbb.cn,相当于跨域了,所以session_id才会一直变化。
解决:将测试环境的配置文件中session的domain改为.xxxx.com, cookie的domain改为.xxxx.com
结果:session_id不再变换,session可正常存取,用户可以正常登陆系统了。问题已解决
附上session工作原理,以便大家更明白session
最佳答案