Почему функция рендеринга в ExceptionHandler в laravel не выполняется?

Я хочу показать страницу 500 internal server error Страница, но вместо отображения отчета или рендеринга она просто отображает типичное представление исключений Laravel с сообщением об ошибке.

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)
{

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

    if ($statusCode === 404 or $statusCode === 500) {
        return response()->view('errors.' . $statusCode, [], $statusCode);
    }
    return parent::render($request, $exception);
}

person Islam    schedule 17.06.2019    source источник
comment
Я думаю, что ваш метод рендеринга может вызывать исключение. Чтобы получить код состояния: $statusCode = $exception->getCode();. getStatusCode() API доступен для исключений http.   -  person adam    schedule 17.06.2019


Ответы (2)


Если вы видите сообщение woops при 500 ошибках вместо страницы с 500 ошибками, это значит, что приложение находится в режиме отладки.

В файле .env отредактируйте следующую строку

APP_DEBUG=true

to be

APP_DEBUG=false
person Joe    schedule 17.06.2019
comment
это уже APP_DEBUG=false я не знаю в чем проблема - person Islam; 17.06.2019

Не могли бы вы проверить файл bootstrap/app.php, чтобы убедиться, что обработчик исключений привязан правильно? Конфигурация по умолчанию будет подобной этой.

Некоторое время назад я написал сообщение о реализации пользовательского обработчика исключений в Larvel, он может содержать некоторую полезную информацию по вашей проблеме.

person PtrTon    schedule 17.06.2019
comment
boostrap/app.php подобен стандартному, который я также стараюсь установить в файле .env APP_DEBUG=false, но у меня всегда одна и та же проблема. Я создал другой проект, чтобы проверить, работает он или нет, и он работает, но в проекте, над которым я работаю, этого не происходит. Есть ли что-то, что может привести к тому, что функция рендеринга в Handler.php не будет работать???? - person Islam; 18.06.2019
comment
В таком случае, возможно, мы что-то упустили. Вы пробовали проверять файлы конфигурации? Вы зарегистрировали другой обработчик исключений? Вызывается ли вообще функция render()? Выбрасываете ли вы исключение во время веб-запроса или выполнения командной строки? Есть ли у вас зарегистрированное промежуточное ПО, которое может мешать? Вероятно, есть еще много вещей, которые нужно проверить, но вы можете начать с этих - person PtrTon; 18.06.2019