首页 > 解决方案 > 更改默认 Laravel “服务器错误”消息

问题描述

我注意到在生产模式下,我的调试模式设置为false,我的大多数函数try/catch都会返回 Laravel 默认的“服务器错误”消息。

我一直在尝试寻找这条消息,但运气不佳,如何在关闭调试时自定义从 Laravel 应用程序中的函数返回的这条通用消息?

标签: laravel

解决方案


如果您指的是一个非常通用HTTP 500的错误,它是框架中的一个刀片文件。

如果您想为5XX错误等显示您自己的错误,您可以通过创建一个带有您要覆盖的错误名称的刀片文件来覆盖它们。例如:

资源/视图/错误/500.blade.php

{{ __('Uh oh. Something has gone wrong behind the scenes.');

现在,当遇到错误时,将显示500您的错误,而不是默认的 Laravel错误。blade500

您也可以为常见错误创建文件。

更新

HTTPExceptionsLaravel 中的默认消息由目录中的 SymfonyResponse类提供Symfony\Component\HttpFoundation

在 中提供错误消息时APIs,大多数会HTTP status code在标头中发送默认值,然后在响应正文中提供人为错误消息。

对于您的示例,您可能会执行以下操作:

return response()->json([
    'errors' => [
        [
            'status' => 500,
            'title' => 'Internal server error',
            'message' => 'A more detailed error message to show the end user'
        ],
    ]
], 500);

然后,您将负责使用错误响应并向最终用户显示human readable错误而不是默认的 generic Internal server error

您可能会发现一些JSON API 示例很有用。


推荐阅读