一个很囧的PHP SESSION 失效的问题 [疑难杂症]
post by 朦朧中的罪惡 / 2009-8-13 18:44 Thursday
今天emlog群里面有用户说有个博客不能留言,正确填写了验证码之后emlog提示验证码失效.要到网址自己尝试了一下,果然如此.
emlog的验证码程序验证逻辑是绝对没有问题的,那么导致这个情况的只可能是该服务器PHP的Session出现了问题.
首先检查该服务器的环境,http抓包显示是 IIS 6.0 + PHP 5.2.0 RC4
看到PHP 5.2.0 RC,我首先考虑是不是这个版本的PHP存在Bug.去PHP官网查询后发现该版本不存在Session的Bug.
既然不是PHP的问题那么再检查Cookie的状态.
用FireBug查看该站点的Cookie信息,看到PHP的Session所属的Cookie存在并且有值.没有问题.
这时我看到了该Cookie的Path属性,当场就囧掉了...
为啥囧,Cookie的Path居然被设为了C:\Windows\temp.
很显然这个服务器的管理员把php.ini中的Session配置属性session.cookie_path和session.save_path给了弄混了,把php临时文件的路径赋给了session.cookie_path,而这样的结果就是Cookie失效导致PHP无法获得SessionID.验证码自然就成了摆设了...





引用: