php无法保存SESSION问题总汇
昨天客户又过来说网站的问题,说的也都是些毛毛雨的东西,管理那么多网站,再有这么些客户的存在,本人也是累了,但当登录后台的时候突然发现后台登录不了,查看了一下验证码服务器端的session为空值,之前登录从来没有出现过这情况,一开始我也猜想是服务器环境的问题,但我还是耐着性子看了看程序代码,确实没发现什么问题,最后转向了服务器端度娘了这个问题,原来是session保存的权限问题,而且在之前的工作中也有很多关于权限的问题,看来权限对程序的影响真的是很重要啊。这次的精力让我明白了以下几点:
1.早已经完成的网站如果中间从没动过,程序代码也可以正常查看一般不是程序问题,要么是什么东西被别人动了,比如说病毒,日常维护操作所致,黑客等,一般是环境问题,要检查环境
2.找问题是一个步骤性的工作,应该一步一步慢慢调试,还是不能心急,要保持心态的平和
3.不懂或不知道要多于别人沟通,确实不懂也可以问度娘(谷歌或者很好,只是本人没那种习惯,或者以后会用到的吧)
一下是从网上别人对session的一些总结:
由于是在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的话 请关注后面的文章。
原文地址:http://my.oschina.net/u/574397/blog/143961
php无法保存SESSION问题总汇的更多相关文章
- wamp下php无法保存SESSION问题总汇
由于是在windows 下的iis进行php的环境,所以很多情况下不能像lamp那么简单进行设置.由于工作原因我也遇到很多session无法保存的情况(在wamp下).以下是相信信息的汇总,仅供参考学 ...
- 【荐】PHP Session和Cookie,Session阻塞,Session垃圾回收,Redis共享Session,不推荐Memcached保存Session
什么是 Session 在 web 应用开发中,Session 被称为会话.主要被用于保存某个访问者的数据. 由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的 ...
- 在Tomat7上使用Redis保存Session
源博客http://my.oschina.net/gccr/blog/321083 当用户量大.应用服务器使用集群来布署时,使用Tomcat默认自带的Session就不能满足需求了.当然解决方法有很多 ...
- 如何使用数据库保存session的方法简介
使用数据库保存session的方法 php的session默认是以文件方式保存在服务器端,并且在客户端使用cookie保存变量,这就会出现一个问题,当一个用户由于某种安全原因关闭了浏览器的cookie ...
- Asp.Net保存session的三种方法
C#中保存Session的三种方法及Web.Config设置 1.保存session到sql server,需要指定Sql Server服务器,这种方法因为要读写数据库最慢 <sessionSt ...
- ASP.NET 使用mode=”InProc”方式保存Session老是丢失,无奈改成StateServer 模式。
http://blog.csdn.net/fox123871/article/details/8165431 session是工作在你的应用程序进程中的.asp.net进程.iis往往会在20分钟之后 ...
- 使用 StateServer 保存 Session 解决 Session过期,登陆过期问题。
使用 StateServer 保存 Session 正常操作情况下Session会无故丢失.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这 ...
- PHP利用MySQL保存session
实现环境: PHP 5.4.24 MySQL 5.6.19 OS X 10.9.4/Apache 2.2.26 一.代码 CREATE TABLE `session` ( `skey` ) CHARA ...
- Laravel使用redis保存SESSION
Laravel使用redis保存SESSION 首先确认服务器已经安装redis服务,php安装了redis扩展. 1.打开config/database.php.在redis配置项中增加sessio ...
随机推荐
- Linux数组基础
执行结果:
- 2.1 Rust概念
标识符 The first character is a letter.The remaining characters are alphanumeric or _.或The first charac ...
- Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)
话不多说,先上完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 转发 django 初探
https://www.cnblogs.com/franknihao/p/7682914.html https://blog.csdn.net/tang_jin2015/article/details ...
- 移动测试之appium+python 简单例子(五)
# coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTestRun ...
- nodejs的异步非阻塞IO
简单表述一下:发启向系统IO操作请求,系统使用线程池IO操作,执行完放到事件队列里,node主线程轮询事件队列,读取结果与调用回调.所以说node并非真的单线程,还是使用了线程池的多线程. 上个图看看 ...
- script脚本中写不写$(document).ready(function() {});的区别
$(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用 ...
- 你真的了解 advice, joinpoint,pointcut,aspect吗?
假设我们有一个很普通的Employee类,在某些方法被调用时,这个类里的方法也被调用. class Employee{ public String getName(int id){....} priv ...
- mysql关键字执行顺序
from on join where group by having select distinct union order by 昨天去58面试,之前的java基础和数据结构算法之类的都还可以,最后 ...
- fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)(转)
fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...