由于是在windows 下的iis进行php的环境,所以很多情况下不能像lamp那么简单进行设置。由于工作原因我也遇到很多session无法保存的情况(在wamp下)。以下是相信信息的汇总,仅供参考学习。
1,php.ini设置问题,这类情况下需要设置
session_auto_start = on //这是自动开启session的
在php文档中输入 phpinfo 查看是否正确的开启了session。
2,保存session的文件夹有问题
首先查看php.ini中的session_save_path 是否存在,并且没有被注释掉,如果存在的话 一般在widnows中默认的为c:\windows\tmp 下,这目录默认是不允许其他用户读取的。
解决方案
1.设置 文件夹为 everyone 可读取 可写入 ,这样虽然可以解决问题,但是却产生了新的问题就是安全问题,因为是windows 下,可以进行注册表等其他信息的跨目录读取。
2.重新设置 session_save_path ,设置完成以后 重启iis 看是否成功 如果不成功的话 请设置两个,因为在php.ini中为了兼容以前的版本是有两个的 一个是被注释掉的 一个是 4.0以上 一个是5.0以上的。设置完成后,设置被设置的目录为everyone 读取 写入,然后继承,其他的都不要勾取,这样就保证了保存目录的安全和系统数据的安全。
3.和程序代码有关系。
当看到设置的目录中有session生成的时候,但是全部都是0kb的空文件,这时候需要进行检查下代码是否有问题。
解决方案:
1.如果开启了session_auto的话 请关闭掉。然后在页面中上方写写入 session_start
2.如果第一种方案无效的话,建议在session_start前面加上‘@‘符号,写入页面和读取页面都要加的。
4.其他问题,
如果以上原因还不可以进行处理的话,请检查php文档是否为当前加载的php文档,wamp加载的php.ini在apache中,关于检查当前php环境加载的php.ini的话 请关注后面的文章。
转载请著名出处谢谢。。