场景:
操作1:在接口A对$_SESSION['key']赋值A,即$_SESSION['key']=A;
操作2:在接口B对$_SESSION['key']赋值B,即$_SESSION['key']=B,同时输出$_SESSION['key']的值,结果为B;
操作3:在接口C取出 $_SESSION['key'] 的值,结果为A;
为什么呢?为什么呢?
作者百思不得其解。。。
以为是什么设置有问题导致的,上网找了一大堆资料,结果没用。
然后再几个小时后,发现框架里有个坑。。。
即:在操作1和操作2之间,有段检测入口的程序代码,在检测到接口不是A是,就关闭了session的写功能,即调用了函数
session_write_clode();
这段代码只有1行,且在文件前面不起眼的地方,于是乎作者忽略了。。
原来 session_write_close() 应该是为了防止加载session阻塞了页面或者是出于安全考虑防止session被非法修改,所以就关闭了session的写入功能,但可以读取。。。
好吧,就是这个session_write_close()导致的。。