首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将调试/堆栈跟踪添加到API响应/ APP_DEBUG=FALSE中的Laravel中止和异常

将调试/堆栈跟踪添加到API响应/ APP_DEBUG=FALSE中的Laravel中止和异常
EN

Stack Overflow用户
提问于 2020-11-11 23:06:08
回答 2查看 588关注 0票数 0

如果我在API控制器/路由中抛出异常,它总是返回一个对象,包括堆栈跟踪。我设置了APP_DEBUG=FALSE和APP_ENV=production,但是我总是得到如下的堆栈跟踪.

假设我将其中任何一个抛到控制器方法中:

throw new HttpException(410, 'Http Exception is gettting a stack trace.');

abort(404, 'Please tell me debug is not found!');

throw new UpdateResourceFailedException('Even my custom exception! How?', 422);

它返回这样一个对象:

代码语言:javascript
复制
{
    "message": "Message",
    "status_code": 410,
    "debug": {
        "line": 412,
        "file": "/var/www/example.com/app/Http/Controllers/OrderController.php",
        "class": "Symfony\\Component\\HttpKernel\\Exception\\HttpException",
        "trace": [
            "#0 [internal function]: App\\Http\\Controllers\\OrderController->show()",
            "#1 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array()",
            "#2 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction()",
            "#3 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\\Routing\\ControllerDispatcher->dispatch()",
            "#4 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\\Routing\\Route->runController()",
            "#5 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(572): Illuminate\\Routing\\Route->run()",
            "#6 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()",
            "#7 /var/www/example.com/vendor/dingo/api/src/Http/Middleware/Auth.php(55): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()",
            "#8 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Dingo\\Api\\Http\\Middleware\\Auth->handle()",
            "#9 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()"...

我无法关掉它,也弄不清楚它为什么要加它。任何帮助都将不胜感激。是的,我已经转储了我的.env变量和配置文件,以查看系统认为值是什么,并且总是这样:"debug":false

对于为什么要返回调试,有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-12 04:58:43

您可以始终捕获这些错误,并将异常消息作为响应返回。

代码语言:javascript
复制
try{
    //throw exception here
     throw new UpdateResourceFailedException('Even my custom exception! How?', 422);
 }catch(UpdateResourceFailedException $ex){
   // when you want http response
   // return response(['custom_exception'=>$ex->getMessage()], 4xx); 
   // when you want resposne as json
     return response()->json(['custom_exception'=>$ex->getMessage()], 4xx); 
 }

您可以返回这些异常以及状态代码。

https://www.php.net/manual/en/throwable.getmessage.php

票数 0
EN

Stack Overflow用户

发布于 2020-11-12 16:37:16

您可以创建一个用于处理所有异常的特性--更新您的异常/handler.php以调用属性,而不是显示跟踪。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64795491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档