Windows下Apache + PHP SESSION丢失的解决过程全纪录
今天的工作是迁移一个php站点至新服务器。
创建一台windows server 2008虚拟机,并在其上停掉net stop http服务(避免争抢80端口),安装配置 apache + php,迁移站点至新服务器,站点正常打开,apache + php运行正常,连接mysql server正常,一切都美好,本想着半小时完成的工作,紧接着噩梦开始了。
该站点使用单点登录,登录过程包含javascript异步操作,包含soap调用web service。登录却直接跳回了登录页面,没有任何错误提示,考虑了以下可能:
1、是账户异常?在其他系统测试,账户状态正常。
2、是javascript异步操作失败?用ie开发人员工具跟踪javascript返回值,返回值正常。
3、是web service调用失败?用fiddler跟踪web service的返回值,表明已经验证成功,已经完成本地登录。
反复跟踪调试,才开始怀疑该站点session丢失了:
1、javascript异步操作设置session失败,难道是因为同步访问和异步访问的session id是不同造成的?这在flash中进行异步调用才出现过,javascript也会吗?输出同步访问和异步访问的session id值是一样的。
2、建2个php测试页面,在一个页面中设置session,在另一个页面中却读不到。检查php.ini相关设置,看起来是正常的,查看session.save_path = "c:/php/tmp"路径,却果真没有session相关的文件,设置连tmp目录都没有。
结局令人啼笑皆非,没有tmp目录,php无法写入session文件,自然session就丢失了。为什么没有tmp目录,因为安装包里没有……我的3小时。
以上所述就是本文的全部内容了,希望能够对大家学习php有所帮助。
推荐阅读
-
Windows下Apache + PHP SESSION丢失的解决过程全纪录,apache全纪录
-
PHP关于IE下的iframe跨域导致session丢失问题解决方法
-
Windows下PHP安装路径配置错误导致Apache无法启动的解决方法
-
apache2.2和php5.2.17在windows下整合过程的错误解决方法
-
Windows下Apache + PHP SESSION丢失的解决过程全纪录
-
PHP关于IE下的iframe跨域导致session丢失问题解决方法
-
在PHP+Apache+MySQL环境下(windows系统),连接SQLServer数据出现“can not find driver”问题的解决办法
-
Windows下Apache + PHP SESSION丢失的惨痛经历,apachesession_PHP教程
-
Windows下PHP安装路径配置错误导致Apache无法启动的解决方法
-
Windows下Apache + PHP SESSION丢失的解决过程全纪录_php实例