我是靠谱客的博主 斯文招牌,这篇文章主要介绍无效库(可能不是php库),ThinkPHP设置了数据库session,写入无效的问题,现在分享给大家,希望可以做个参考。

之前写过一个使用数据库session的系统,也实现了在线T人的功能,然而今天的时候发现不能正常使用了,查看存放session的数据表,结果发现session根本没有写入到数据库中,明明之前可以使用的,甚是纠结,查看TP的代码发现了问题,下面给出解决方案。

解决方案

设置php.ini,将session.auto_start 设置为0,也就是禁用session自动开启,问题就得到解决了。

原因分析

打开ThinkPHP的.ThinkPHPCommonfunctions.php的这个文件,大概在1197行,找到函数function session($name=”,$value=”) 的实现,往下查看可以在1218行处看到如图所示的内容。

faf81bb6fb0bc6e212d24f2ffb19a0b5.png

ThinkPHP中根据用户配置的SESSION_TYPE来创建对应的自定义的对话存储,如果我们设置了使用数据库session,在TP中也就是Db,这个时候就会创建..ThinkPHPLibraryThinkSessionDriverDb.class.php这货的对象,然后使用 session_set_save_handler设置相关的handler就可以实现自定义的对话存储了。但是!然而!如果在调用session_set_save_handler之前session已经开起了,那么这货就会返回false,也就是设置无效,而TP在这里并没有检测,所以在php.ini中如果设置了session.auto_start,那么自定义的对话存储将无效。

扫码领个红包作为打赏吧~~

(余额宝支付时可抵现)

喜欢 (4)or分享 (0)

最后

以上就是斯文招牌最近收集整理的关于无效库(可能不是php库),ThinkPHP设置了数据库session,写入无效的问题的全部内容,更多相关无效库(可能不是php库),ThinkPHP设置了数据库session,写入无效内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部