Jak wysyłać błędy wykonania skryptu w PHP na e-maila?

PHP - Tips & Tricks Zostaw komentarz

Pisząc skrypt w języku PHP nie zawsze jesteśmy pewni efektów. Czasami w najmniej spodziewanym momencie może się pojawić błąd. Oto przykładowy skrypt:

$b=0;
$a=100/$b;

Oczywiście na ekranie pojawi się komunikat błędy podobny do tego: Warning: Division by zero in /home/user/public_html/katalog/err.php on line 3

Oczywiście jest to celowy przykład błędu. Zazwyczaj jest tak, że wartość zmiennej b nie jest na sztywno przypisana, ale np. jest pobierana z bazy i masz pewność, że nigdy nie będzie zerem, ale na skutek kilku nieprzewidzianych okoliczności, jednak jej wartość wynosi zero i pojawia się owy błąd z dzieleniem przez zero.

Najprościej by było przed dzieleniem dać jakiegoś if’a w celu zabezpieczenia się przed taką sytuacją, ale tutaj znów nie zawsze da się przewidzieć takie sytuacje. Również testując własny kod nie zawsze się wyłapie wszystkie błędy. Niestety, ale wypluwane błędny na ekran nie wyglądają zbyt profesjonalnie. Często jest tak, że twórca aplikacji nic nie wie o pojawiających się sporadycznie błędach do czasu, aż ktoś mu nie napisze maila. Jednak internauci nie zawsze są skłonni napisać e-maila do administratora z informacją o napotkanym błędzie i często okazuje się, że administrator serwisu o owym błędzie dowiaduje się np. pół roku po napisaniu skryptu bo coś tam przez przypadek zaglądnął na stronę i akurat mu się pojawił błąd.

Można jednak bardzo łatwo w PHP dodać własną obsługę błędów. Co byś powiedział, gdyby w razie wystąpienia takiego błędu został wysłany Tobie raport wprost na skrzynkę e-mail? Wystarczy tylko napisać jedną prostą funkcję i nakazać interpreterowi PHP, aby w razie wystapienia błędu owa funkcja została wywołana.

Oto przykładowa funkcja:
function error_handler($errNo, $errStr, $errFile, $errLine) {
$err = 'Nr bledu: ' . $errNo . 'Opis: ' . $errStr . 'plik: ' . $errFile .' linia ' . $errLine;
mail("", "błąd w PHP", $err, "From: ");
exit;
}

Do tego trzeba jeszcze w skrypcie ustawić funkcję, która ma obsługiwać błędy: czyli piszemy jedną linijkę:
set_error_handler('error_handler', E_ALL);

Najlepiej owe kawałki kodu dodać do jakiegoś pliku, który jest includowany przez wszystkie pliki (np. pliki w stylu: config.php czy baza.php)

Tagi:

Zanim dodasz komentarz, zapoznaj się z kilkoma podstawowymi zasadami:

  1. Jeśli zamiast imienia (lub pseudonimu) wpiszesz jakiś mało logiczny ciąg znaków np. asdfg, to taki komentarz zostanie usunięty.
  2. Jeśli się za kogoś podszywasz, to taki komentarz zostanie usunęty
  3. Jeśli zamiast imienia (pseudonimu) wpiszesz jakieś słowo kluczowe (np. tani hosting), to taki komentarz zostanie usunięty
  4. Jeśli Twoim jedynym celem jest zareklamowanie się, to taki komentarz zostanie niezwłocznie usunięty
  5. Komentarze nie związane z tematem notki są kasowane.
  6. Komentarze, które zawierają wulgarne słowa, bądź są obraźliwe (nie dotyczy konstruktywnej krytyki) są kasowane.
  7. Komentarze z mailem typu "nie.podam@coś.tam.pl" są kasowane
  8. Komentarze pisane niechlujnie (bez interpunkcji, w błędami ortograficznymi, z licznymi literówkami, pisane WIELKIMI LITERAMI) są kasowane

Jeden komentarz do “Jak wysyłać błędy wykonania skryptu w PHP na e-maila?”

  1. tworzenie skryptów PHP Says:

    Przydatny pomysł 🙂 naprawdę warty zastosowania

Zostaw komentarz

WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj się