首页 > 解决方案 > Laravel 5.6 - 处理 Api 的内部服务器错误 (500) 的异常处理程序

问题描述

在 laravel 中,我们可以如下处理异常:

 public function render($request, Exception $exception)
{
    if ($exception instanceof ModelNotFoundException or $exception instanceof NotFoundHttpException)
    {
        if($request->ajax() || $request->wantsJson()) {
            return response()->json([
                'message' => 'Record not found',
            ], 404);
        }


    }


    return parent::render($request, $exception);
}

但是,当出现内部服务器错误时,Whoops something went wrong如果在生产中,应用程序将返回页面,如果在调试中,则返回堆栈跟踪。

使用需要 json 的 api 时如何处理内部服务器错误?

标签: exception-handlinglaravel-5.6

解决方案


我有一个类似的问题,但它是我的.htaccess文件,我没有正确的配置。(我的环境是 Laravel 5.6,Bitmani LAMP)

.htaccess必须具有以下内容:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
RewriteBase /

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

这对我有用,在我的 API中修复了我的“内部服务器错误 (500)” 。一个建议是您检查 apache 日志(error_log 和 access_log),它们可以为您提供更多信息。

我希望它对你有帮助。


推荐阅读