Laravel - Как перехватить все исключения в Laravel приложении и запретить пользователям видеть исключения - PullRequest
0 голосов
/ 31 марта 2020

В моем проекте Laravel -5.8 я пытался запретить пользователям видеть какие-либо ошибки кода в производственной среде, но эти ошибки все еще появляются.

Например, я позаботился обо всех ошибках сервера : 404500 et c. Кроме того, в моих контроллерах у меня есть что-то вроде:

try {
    Session::flash('success', 'Staff is created successfully');
    return redirect()->route('employees.index');
} catch (Exception $exception) {
    DB::rollback();

    Session::flash('error', 'Action failed! Please try again');
    return redirect()->route('employees.index');
}

Но я все еще вижу:

Аргумент 2, передаваемый в (), должен быть вызванным или нулевым, объект задан

Как вообще предотвратить появление каких-либо ошибок, а только настроенных сообщений?

Спасибо

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете управлять laravel исключениями в обработчике исключений, расположенном в App\Exceptions\Handler.php

, в частности, render метод отвечает за проверку типа визуализации исключения на основе экземпляра самого исключения. Чтобы отключить исключения, просто настройте метод рендеринга:

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Throwable  $exception
 * @return \Symfony\Component\HttpFoundation\Response
 *
 * @throws \Throwable
 */
public function render($request, Throwable $exception)
{
    /*Log exception somewhere or do whatever you want but prevent 
    default laravel render by commenting render below */

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

, даже если это не очень хороший подход к тихим ошибкам, лучше было бы просто установить параметры .env, чтобы не сообщать о каких-либо ошибках:

в вашем .env установите APP_DEBUG в false:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:hufIiGav1fOzia1urm5Ik06Xa2NOEYMtP7mW0vE1tmw=
APP_DEBUG=false
APP_URL=http://localhost
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...