Closed ichynul closed 3 weeks ago
经过观察如果think\Session::createDriver()
里面抛异常,think\initializer\Error::appException()
调用http->end()
调用think\middleware\SessionInit::end();
又会触发报错。
然后走到框架的http->end()
又重复一次。
一个页面渲染了多次错误。
检测驱动类型不是那两种就强制为file
,这中方案简单有效些。
初始化阶段的异常改成采用内置的异常处理机制了
所属功能组件
异常(Exception)
ThinkPHP 版本
6.1
操作系统
linux
错误信息
原因,tp6以后session驱动只支持[file/cache]两种类型了。 问题就出在这里,如果你填了这两个个之外的值,比如填个
redis
,那么框架又是白屏+无日志。 错误日志:原因分析: Session初始化驱动时调用Manager创建Driver 但填的类型找不到类,抛出异常。 进入ErrorHandle渲染错误页面。 错误信息收集
session
信息,又触发了session驱动调用直接抛出异常导致白屏。 也就是说渲染异常的时候又出现异常了。
处理方案: 修改:think\Session
其它说明
为什么我遇到这个问题,因为程序是买来的,它的session配置可能是复制了tp5的 //驱动方式 支持redis memcache memcached
我以前说的一个问题,还打算修复吗?我就奇怪是不是只有我一个人会遇到这些蛋疼问题??每次遇到都是花费半天时间去修改框架源码调试出来。 (#2999)