PHP: află prin email despre erori


Astăzi am citit pe NetTuts un articol care m-a entuziasmat: Quick Tip: Email Error Logs with PHP. Mi-am permis să preiau de acolo codul doar pentru a-l… „româniza”, ca variabile şi comentarii, pentru cei care ar avea nevoie de aşa ceva. Despre ce este concret vorba? Scrieţi o webaplicaţie în PHP şi… hopa… mai generează şi erori din când în când. Nu aţi vrea să fiţi primul care află? Se poate. Tot ce trebuie este să punem propria noastră funcţie la „tratarea” erorilor. Iar în funcţia noastră vom folosi funcţia error_log care în mod normal (adică doar cu primul parametru) pune eroarea în logul sistem al PHP, dar dacă la al doilea parametru punem 1… poate trimite informaţii despre eroare prin email!

Cool! Iată deci codul puţin adaptat. Dvs mai departe tot aveţi de făcut unele lucruri. De exemplu să stabiliţi ce se întâmpla la eroare. Mai jos, dacă eroarea e gravă, se apelează die(). Puteţi însă şi pur şi simplu afişa un mesaj lăsând codul să îşi continue execuţia (cu un mesaj, totuşi, gen: „Hopa, ştim că ceva nu a mers bine. Studiem şi vom rezolva.”). Apoi trebuie să vă asiguraţi că acest cod nu se execută când lucraţi pe cod şi erorile apar la tot pasul. Sunt diverse metode prin care să puteţi alege execuţia de exemplu să fie doar pe serverul remote, nu şi pe localhost.

<?php
// "error handler" propriu, adica dupa nevoile proprii
function error_handler_propriu($numar, $mesaj, $fisier, $linie, $variabile){
	$textemail = "<p>A aparut o eroare ($numar) in linia <strong>$linie</strong> ".
	"din fisierul <strong>file: $fisier.</strong><p> $mesaj </p>";
	$textemail .= "<pre>" . print_r($variabile, 1) . "</pre>";
	// trebuie doar daca dorim ca emailul sa fie HTML
	$antet = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
	// trimitem eroarea prin email
	error_log($textemail, 1, 'ghita@ionescu.com', $anter);
	// daca e mai grav decat NOTICE atunci "suspendam" executarea scriptului
	if ( ($numar !== E_NOTICE) && ($numar < 2048) ) {
		die("Hopa! Eroare. Mai reveniti.");
	}
}

// spunem ca avem propriul "error handler@
set_error_handler('error_handler_propriu');

// sa provocam acum o eroare de test
echo $ovariabilacenuexista;
?>

Şi iată şi clipul tutorialului. Urmăriţi-l în full screen.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (4 evaluări, media: 5,00 din 5)
Loading...Loading...

2 comentarii

  1. FAR-SOFT spune:

    Recomandarea mea este sa se seteze din script cu ini_set un fisier de erori unde sa se salveze erorile generate de PHP si sa nu se bazeze asa mult pe serverul de mail…
    Cine stie, poate exact cand a generat eroare serverul de mail e suprasolicitat si nu primeste sau trimite mailuri si, na, ce faci in acea situatie?
    Asa ai un log cu toate erorile intri si le citesti si corectezi problemele.

  2. radu.capan spune:

    Eu cred ca e de la caz la caz. Cand ai mai multe webaplicatii, preferi sa fi notificat decat sa frunzaresti zi de zi sau ora de ora logurile. Notificare prin email plus fisier cu erori acolo unde e cazul.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *