如何在laravel 5.2中显示500个内部服务器错误页面?

kun*_*nal 11 php laravel laravel-5.2

我想显示页面500内部服务器错误页面.当用户在项目中出现语法错误时,任何人都可以帮助我吗?如果我在语法上做了一些错误,我想展示那个特殊的刀片.

Add*_*Ltd 15

您需要创建处理程序以捕获FatalErrorExceptions您的处理程序,如下面的代码:

处理器app/Exceptions/Handler.php

public function render($request, Exception $e)
{

    // 404 page when a model is not found
    if ($e instanceof ModelNotFoundException) {
        return response()->view('errors.404', [], 404);
    }

    // custom error message
    if ($e instanceof \ErrorException) {
        return response()->view('errors.500', [], 500);
    } else {
        return parent::render($request, $e);
    }

    return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)

查看 参见resources/views/errors/500.blade.php.如果不存在则创建它.

您可以从Laravel 5自定义错误视图中获取500的更详细或其他方式


Ami*_*pta 7

在您的resources/views/errors 文件夹中创建一个名为的文件500.blade.php

Laravel使显示各种HTTP状态代码的自定义错误页面变得容易。例如,如果您希望为500个HTTP状态代码自定义错误页面,请创建一个 resources/views/errors/500.blade.php。该文件将处理您的应用程序生成的所有500个错误。

问题是Laravel只会自动呈现错误页面的错误页面,这些异常页面是的实例HttpException。不幸的是,当服务器抛出错误(方法不存在,变量未定义等)时,实际上会抛出FatalErrorException。因此,它是未捕获的,并会滴加到,SymfonyDisplayer()它会给您跟踪(调试为真)或丑陋的单行“哇,看起来好像出了问题”(调试为假)。

为了解决这个问题,您已经将此添加到您的render方法中app/Exceptions/Handler

# /app/Exceptions/Handler.php

# use Symfony\Component\Debug\Exception\FlattenException;

# public function render($request, Exception $e)

$exception = FlattenException::create($e);
$statusCode = $exception->getStatusCode($exception);

if ($statusCode === 404 or $statusCode === 500) {
    return response()->view('errors.' . $statusCode, [], $statusCode);
}
Run Code Online (Sandbox Code Playgroud)

文件

  • 这应该是可以接受的答案,因为这一方法有效并且包含在Laravel的官方文档中。 (2认同)