Laravel Internal Error Page показывает сообщение об исключении вместо общего сообщения об ошибке - PullRequest
0 голосов
/ 24 октября 2019

У меня есть приложение laravel 5.7, которое, когда я деактивирую режим отладки, на внутренней странице ошибки сервера продолжает показывать сообщение об исключении вместо общего сообщения «К сожалению, что-то пошло не так на наших серверах!».

enter image description here

Вот код обработчика исключений:

    <?php

namespace App\Exceptions;

use Doctrine\DBAL\Query\QueryException;
use Exception;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that should not be reported.
     *
     * @var array
     */
    protected $dontReport = [
        \Illuminate\Auth\AuthenticationException::class,
        \Illuminate\Auth\Access\AuthorizationException::class,
        \Symfony\Component\HttpKernel\Exception\HttpException::class,
        \Illuminate\Database\Eloquent\ModelNotFoundException::class,
        \Illuminate\Session\TokenMismatchException::class,
        \Illuminate\Validation\ValidationException::class,
        \Illuminate\Database\QueryException::class,
    ];

    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }

    /**
     * Convert an authentication exception into an unauthenticated response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Auth\AuthenticationException  $exception
     * @return \Illuminate\Http\Response
     */
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        return redirect()->guest('login');
    }
}

У меня нет пользовательского представления ошибок 500, и обработчик исключений по умолчанию. Кто-нибудь знает, почему это происходит?

С наилучшими пожеланиями

Ответы [ 4 ]

2 голосов
/ 24 октября 2019

Файл .env

APP_DEBUG=false

Файл config / app.php

'debug' => env('APP_DEBUG', false),

Команда запуска

php artisan config:cache
1 голос
/ 24 октября 2019

Вы можете сделать в app/Exceptions/Handler.php что-то вроде этого:

if ($this->isHttpException($exception)) {

        if ($exception->getStatusCode() == 404) {
            return response()->view('partials.error' . '_404', [], 404);
        }

        if ($exception->getStatusCode() == 403) {
            return response()->view('partials.error' . '_403', [], 403);
        }
    }

    if ($exception instanceof QueryException) {
        abort(500);
    }

также вы можете сделать instanceof ErrorException, чтобы сделать его более универсальным

0 голосов
/ 24 октября 2019

Проблема решена!

Я запустил новую установку composer, и сообщение об исключении исчезло.

Спасибо за все ответы, данные до сих пор

0 голосов
/ 24 октября 2019

Ну, нам особо нечем здесь заниматься. Хотя, если бы я угадал, я скажу, что вы пытаетесь вызвать контроллер, AdsController, который вы еще не создали. В вашем каталоге app / Http / Controllers подтвердите, что у вас есть файл с именем AdsController.php

--- Edits ---

Что вы хотите сделать, это сохранить APP_DEBUGустановите false в вашем файле .env на производстве. Но в вашей среде разработки или офлайн вы захотите, чтобы этот параметр был установлен на true, чтобы предоставить вам подробное подробное сообщение об ошибке, к которому вы привыкли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...