多应用模式下Error.php 应该怎么处理?
来源:3-5 健壮系统服务-杜绝无效请求
qq_玩乐_0
2019-12-19
当多应用模式下 Error.php文件应该放置在什么地方? 如果能够做到一个Error.php文件作用于全部应用呢?
5回答
-
如果是多应用模式下 Error.php文件是需要在对应的模块下面定义。
1、代码定位到 /think/route/dispatch/Controller.php 文件中的 controller 方法
2、可以看到当控制器不存在就会走到 elseif 中的控制器
比如请求的地址是 www.tp6.com, 那么返回的就是 app\controller\Error
如果请求的地址是 www.tp6.com/admin那么返回的就是 app\admin\controller\Error对应其他也是如此。
那么如果要定义一个公共的Error文件就需要一个固定的文件地址。
比如我下面修改的代码
1、在config加入配置项
2、修改源代码 可以还有更好的方式但是我目前想到的就是这样的。
这样配置的话不管是哪个模块都会对应到common/controller/Errro.php文件中。
732019-12-20 -
天经地义
2019-12-19
Error.php是指异常处理的文件吗,如果是的话,全局异常处理类在app目录下的provider.php文件的'think\exception\Handle'参数指定异常处理类;
如果是多应用每个模式下的异常处理类,比如你admin模块,那你就在admin目录下创建一个provider.php文件指定'think\exception\Handle',同理如果是api模块,就在api目录下定义provider.php文件;
provider.php文件有优先级,如果模块下没定义会自动使用app下的,如果模块目录下有定义,那会使用模块里面定义的。
20 -
左手边的回忆
2019-12-21
经过测试,在多应用模式下,在app\controller\Error.php任然能够给生效(在没有更改源码的情况下)
10 -
北城以北是忧愁
2019-12-29
多应用下也可以显示,只要把erroe.php放到当前模块下的controller目录下,修改正确的命名空间即可
00 -
慕莱坞3268959
2019-12-19
采纳的才是正解
00
相似问题