虽然不建议该tp底层代码,但我没有找到其他方法,如果有其他解答这问题的方法,麻烦留言
thinkphp5 开启debug后,当报错后会出现较详细的内容
如果关闭debug 则出现 页面错误,请稍后再试
现在要跟前端合作,然后要保证不管访问什么连接都要返回一个json自读不能返回错误页面
然后你就找而配置文件呀 好不容易看error_message 把它改成了{"status":500 , "description" : "服务器错误!"} 结果吧显示出来的呢是json格式了 结果却还是错误页面,只不过内容是这个
然后你把thinkphp5框架整个翻了一遍 你会发现框架出现错误后会加载thinkphp下面的tpl中的...tpl文件
上面都是废话,解决方法如下:
找到项目目录下的\thinkphp\library\think\exception中的Handle.php
然后找到convertExceptionToResponse方法
你会发现 $response = new Response($content, 'html');
因为你要放回json格式的数据
改成如下内容
$content = json_encode(['status' => 500]);
$response = new Response($content, 'json');
注意要屏蔽
//include Config::get('exception_tmpl');
然后框架错误,就会出现你刚定义的内容了
以下为新的解决方案
其实不用改底层文件 因为在 config中有个 exception_tmpl ,只要改这个文件就可以,如定义一个404.html的html页面 或者定义一个404.tpl
'exception_tmpl' => APP_PATH.'404.tpl',
在application中创建一个404.html的文件
html中写如下内容
{"status":500,"description":"服务器错误"}
返回的就是json字段了

在ThinkPHP框架中,避免抛出异常后显示错误页面,可以通过配置`exception_tmpl`实现。只需在config中定义一个自定义的404.html或404.tpl模板,这样当异常发生时,系统将返回定义的JSON内容。
2407





