Windows下Apache + PHP SESSION丢失的解决过程全纪录
这篇文章记录了一次在Windows环境下迁移PHP站点至新服务器时遇到的Apache PHP SESSION丢失问题的全过程。原本以为半小时就能完成的工作,结果却耗费了三个小时,结局令人啼笑皆非。
创建了一个Windows Server 2008虚拟机,停掉IIS服务以避免端口冲突,然后安装了Apache和PHP,并将站点成功迁移至新服务器。一切都看似正常运行,但当尝试登录网站时,却出现了问题。
该站点采用单点登录,涉及JavaScript异步操作和SOAP调用Web Service。在登录时却直接跳回了登录页面,没有任何错误提示。对此进行了多方面的排查:
1. 账户异常?在其他系统测试,账户状态正常。
2. JavaScript异步操作失败?用IE开发人员工具跟踪JavaScript返回值,返回值也正常。
3. Web Service调用失败?通过Fiddler跟踪Web Service的返回值,也表明已经验证成功,完成了本地登录。
经过反复跟踪调试,开始怀疑站点SESSION丢失了。对此进行了以下排查:
1. 是不是JavaScript异步操作设置SESSION失败?是否因为同步访问和异步访问的SESSION ID不同造成的问题?经测试,同步访问和异步访问的SESSION ID是一样的。
2. 建立了两个PHP测试页面,在一个页面中设置SESSION,在另一个页面中却无法读取。检查phpi相关设置后,似乎一切正常。查看session.save_path = "C:/php/tmp",却惊讶地发现没有SESSION相关的文件,甚至连tmp目录都没有。
结局令人哭笑不得,原来是因为没有tmp目录,PHP无法写入SESSION文件,导致SESSION丢失。为什么会没有tmp目录呢?竟然是因为安装包中没有……我的三个小时啊!
这次经历虽然令人郁闷,但却带来了一次宝贵的学习机会。希望这篇文章能够帮助大家在学习PHP时避免类似的坑,同时也提醒大家在进行服务器配置时,务必仔细检查每一个细节,确保一切正常。
通过这次经历,也让我们更加深刻地认识到,无论是在开发还是运维过程中,都需要细心、耐心和毅力。只有不断学习和积累经验,才能更好地应对各种挑战和问题。希望这篇文章能够给大家带来一些启示和帮助。
编程语言
- Windows下Apache + PHP SESSION丢失的解决过程全纪录
- laydate日历控件使用方法详解
- jQuery插件dataTables添加序号列的方法
- 使用Curl进行抓取远程内容时url中文编码问题示例
- 使用composer命令加载vendor中的第三方类库 的方法
- javascript中判断json的方法总结
- PHP判断指定时间段的2个方法
- 微信小程序 页面跳转传递值几种方法详解
- Json_decode 解析json字符串为NULL的解决方法(必看)
- Thinkphp自定义代码生成工具及用法说明(附下载地
- javascript数据结构中栈的应用之符号平衡问题
- django js 实现表格动态标序号的实例代码
- js精准的倒计时函数分享
- Visual Studio和Visual Studio Code之间有什么区别
- PHP使用JpGraph绘制折线图操作示例【附源码下载】
- 关于两个jQuery(js)特效冲突的bug的解决办法