Pour avoir un peu plus d’infos sur les erreurs et être avertis par mail en prod, j’ai remplacé un bout de code dans le fichier app/start/global.php
App::error(function(Exception $exception, $code) { Log::error($exception); });
par
App::error(function(Exception $exception, $code) { Log::error($exception); Log::error(print_r($_SERVER,true)); if (App::environment('prod')){ Mail::send(['text'=>'emails.rapport'], ['contenu'=>$exception."\n".print_r($_SERVER,true)], function($m) { $m->to('bug@mail.com')->subject('[edmc73] BUG sur site'); }); } });
Il faut aussi penser à faire une mini vue que nous mettrons dans app/views/emails/rapport.php avec ce code
<?=$contenu?>
Pour recevoir un mail lorsqu’une exception est déclenché, modifiez la méthode report du fichier app/Exceptions/Handler.php
public function report(Exception $exception) { if ($this->shouldReport($exception)) { $debugSetting = config('app.debug'); config(['app.debug'=> true]); if (ExceptionHandler::isHttpException($exception)) { $content = ExceptionHandler::toIlluminateResponse(ExceptionHandler::renderHttpException($exception), $exception); } else { $content = ExceptionHandler::toIlluminateResponse(ExceptionHandler::convertExceptionToResponse($exception), $exception); } config(['app.debug'=> $debugSetting]); $data['content'] = (!isset($content->original)) ? $exception->getMessage() : $content->original; \Mail::send( ['html' => 'emails.exception'], ['content' => $data['content']], function ($m) { $m->from(['support@domaine.com']); $m->to(['moi@domaine.com']); $m->subject('Crash Report : '.config('app.name')); } ); } parent::report($exception); }
Créez une petite vue resources/views/emails/exception.blade.php
{!! $content !!}