今天碰到一个奇怪的session问题
nginx+php已经跑了半个多月了,貌似没什么问题,今天网站管理那里说从上周5开始,DZ后台管理不方便。
于是看了一下,貌似是session丢失,经常要求登录,一开始看,似乎是每次操作都需要输入一次口令,想起来以前设置了session.use_trans_sid=0,于是改成1,再试,似乎稍微好一些,连续点击后台管理的链接,一开始几次没问题,10到20秒以后又要输口令。
DZ前台正常的。
觉得应该是session丢掉了,但前后台是跑在同一个环境下的,而session.save_path下的session文件产生是正常的。看php.ini里是开启了log的,记录到系统日志里,于是看系统日志,除了load几个so,没其他报错了。
本来就对PHP不熟悉,这把更抓瞎了。
一直只关心nginx的配置和性能问题,对于nginx+php的排错倒是一点都没有研究,而且网上的资料也很少,细节文档都是俄语的,我也看不懂。
于是向换apache看看是不是还有问题,结果发现也是有问题的,但很幸运,apache访问同样的页面的时候,页面上有错误提示:Please verify that the current setting of session.save_path is correct (2;/tmp/phpsession) ,说一个二级hash目录不存在。
这把晕了,php.ini里也就是简单的session.save_path=/tmp/phpsession,并没有什么session.save_path=2;/tmp/phpsession,而且这个目录下前台访问的session文件产生很正常,也没要求什么二级目录。
至于PHP程序里能不能设定这个session临时文件的保存位置,我也不清楚。先不管了,到/tmp/phpsession下建了个16个子目录的二级hash目录树,权限设置正确,再尝试,没问题了。
就这么一个问题,今天耗了我4个小时样子。

订阅我的BLOG(RSS)