CI框架session失效的问题
一历史项目升级,出现巨坑。在服务器上运行正常,下载本地搭建后CI框架出现异常session失效,具体表现为session本身可写可读跨页失效,具体表现为每次执行都会生成新的session_id。
初步判断是数据库写session的问题,测试换成文件故障依旧,部署memcached切换均无法解决。
项目前后台都用的同一套CI,后台故障的同时前台却没问题,最奇葩的是前台访问一旦有session_id,后台也好用了,但没有session后台也用不了。
不是没有怀疑过cookie,搞笑的是测试时读写均有内容,于是就开始跟小伙伴满网各种找,SF上甚至有人说自己重装了mac都不行,顺道吐槽一下度娘现在就是个玩偶,除了XXX就是呵呵呵,喵了个咪的。
长话短说,直接上最终发现的问题原因–CI的cookie读写有自己的一套逻辑,跟php的原生cookie有区别,感兴趣可以瞅瞅System/libraries/Session.php。本项目故障现象如此复杂是因为前台用的原生cookie,后台用的CI cookie,还有最奇葩的原因–Mamp,
Mac下Mamp 的php.ini 中 output_buffering 设置默认Off,直接修改php.ini还不行,需要用Mamp配置修改,步骤如下:
- Start MAMP PRO
- Select File -> Edit Template -> PHP4 php.ini / PHP5 php.ini
- Search this line “output_buffering = Off”
- Change “Off” to “On” or to a maximum number of bytes instead (for example “4096”)
- Save the file
- Start Servers
综上,所有的坑都是因为CI+Mac+Mamp+前后台调用不一致碰到一起,缘–真的妙不可言!
分享到: | |
没有评论