我想有一个自定义的500错误页面。这可以通过在errors/500.blade.php中创建一个视图来简单地完成。这对于生产模式来说是很好的,但是在调试模式下,我不再得到默认的异常/调试页面(看起来是灰色的,并说"哎呀,出了问题")。因此,我的问题是:我怎么能有一个自定义的500错误页生产,但原来的500错误页时,调试模式是真的?
errors/500.blade.php
kulphzqa1#
只需将此代码添加到\App\Exceptinons\Handler.php中即可:
public function render($request, Exception $exception) { // Render well-known exceptions here // Otherwise display internal error message if(!env('APP_DEBUG', false)){ return view('errors.500'); } else { return parent::render($request, $exception); } }
或者
public function render($request, Exception $exception) { // Render well-known exceptions here // Otherwise display internal error message if(app()->environment() === 'production') { return view('errors.500'); } else { return parent::render($request, $exception); } }
5t7ly7z52#
我发现解决问题的最佳方法是将以下函数添加到App\Exceptions\Handler.php
App\Exceptions\Handler.php
protected function renderHttpException(HttpException $e) { if ($e->getStatusCode() === 500 && env('APP_DEBUG') === true) { // Display Laravel's default error message with appropriate error information return $this->convertExceptionToResponse($e); } return parent::renderHttpException($e); // Continue as normal }
欢迎更好的解决方案!
xxhby3vn3#
从Laravel 5.5+开始,如果你有APP_DEBUG=false并且有views/errors/500.blade.php文件,这将自动发生。https://github.com/laravel/framework/pull/18481
APP_DEBUG=false
von4xj4u4#
将代码添加到Handler类内的app/Exceptions/Handler.php文件中:
Handler
app/Exceptions/Handler.php
protected function convertExceptionToResponse(Exception $e) { if (config('app.debug')) { return parent::convertExceptionToResponse($e); } return response()->view('errors.500', [ 'exception' => $e ], 500); }
convertExceptionToResponse方法可以纠正导致500状态的错误。
convertExceptionToResponse
9lowa7mx5#
在Laravel 7+中,您可以执行以下方法
public function render($request, Throwable $exception) { if (!env('APP_DEBUG', false)) { return response()->view("error500"); } else { return parent::render($request, $exception); } }
njthzxwz6#
将此代码添加到app/Exceptions/Handler.php,render方法中。我认为这是干净和简单的。假设您有自定义500错误页。
render
public function render($request, Exception $e) { if ($this->isHttpException($e)) { return $this->toIlluminateResponse($this->renderHttpException($e), $e); } elseif (!config('app.debug')) { return response()->view('errors.500', [], 500); } else { // return $this->toIlluminateResponse($this->convertExceptionToResponse($e), $e); return response()->view('errors.500', [], 500); } }
使用注解行当你需要默认 whoops 错误页调试.使用其他一个自定义500错误页.
w6lpcovy7#
在Laravel 8.x & 9.x中,您可以使用以下方法:在项目根文件夹的.“env”文件中,将APP_DEBUG设置为false然后在~/resources/views/errors中创建一个名为500.blade.php的文件(如果还没有,请创建errors文件夹)。这将在任何500服务器错误响应上呈现自定义页面。
8.x
9.x
APP_DEBUG
false
~/resources/views/errors
500.blade.php
oalqel3c8#
在Laravel 9.x中,最简单的方法是将以下内容添加到app/Exceptions/Handler.php
protected function getHttpExceptionView(HttpExceptionInterface $e) { // In debug mode we do not want to show our custom error views if (config('app.debug')) { return null; } return parent::getHttpExceptionView($e); }
8条答案
按热度按时间kulphzqa1#
只需将此代码添加到\App\Exceptinons\Handler.php中即可:
或者
5t7ly7z52#
我发现解决问题的最佳方法是将以下函数添加到
App\Exceptions\Handler.php
欢迎更好的解决方案!
xxhby3vn3#
从Laravel 5.5+开始,如果你有
APP_DEBUG=false
并且有views/errors/500.blade.php文件,这将自动发生。https://github.com/laravel/framework/pull/18481
von4xj4u4#
将代码添加到
Handler
类内的app/Exceptions/Handler.php
文件中:convertExceptionToResponse
方法可以纠正导致500状态的错误。9lowa7mx5#
在Laravel 7+中,您可以执行以下方法
njthzxwz6#
将此代码添加到
app/Exceptions/Handler.php
,render
方法中。我认为这是干净和简单的。假设您有自定义500错误页。使用注解行当你需要默认 whoops 错误页调试.使用其他一个自定义500错误页.
w6lpcovy7#
在Laravel
8.x
&9.x
中,您可以使用以下方法:在项目根文件夹的.“env”文件中,将
APP_DEBUG
设置为false
然后在
~/resources/views/errors
中创建一个名为500.blade.php
的文件(如果还没有,请创建errors文件夹)。这将在任何500服务器错误响应上呈现自定义页面。
oalqel3c8#
在Laravel 9.x中,最简单的方法是将以下内容添加到
app/Exceptions/Handler.php