Autor Zpráva
Paulí
Profil
Dobrý den,
prosím Vás o radu.
Potřeboval bych kod pomoci kterého bych odchytil všechny php chyby aby se nezobrazovaly ale místo nich se napsal určitý text a aby se ta chyba odeslala emailem.
Děkuji moc za rady.
S pozdravem Paulí.
koudi
Profil
http://cz.php.net/manual/cs/function.set-error-handler.php
Paulí
Profil
koudi
Tak to mi nějak nepomohlo.
Ten kod sice ukazuje chyby ale ty pouze NASCHVÁL VYVOLANÉ.
To znamená že když tam nachvál přidám třeba před uzavřením php (?>) přidám <? tak se vyvolá chybu se kterou ten php nepočítal .... takže to nefunguje tak jak bych chtěl.....

//<?php

// error handler function
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br /> ";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br /> ";
echo "Aborting...<br /> ";
exit(1);
break;

case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br /> ";
break;

case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br /> ";
break;

default:
echo "Unknown error type: [$errno] $errstr<br /> ";
break;
}

/* Don't execute PHP internal error handler */
return true;
}

// function to test the error handling
function scale_by_log($vect, $scale)
{
if (!is_numeric($scale) || $scale <= 0) {
trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale", E_USER_ERROR);
}

if (!is_array($vect)) {
trigger_error("Incorrect input vector, array of values expected", E_USER_WARNING);
return null;
}

$temp = array();
foreach($vect as $pos => $value) {
if (!is_numeric($value)) {
trigger_error("Value at position $pos is not a number, using 0 (zero)", E_USER_NOTICE);
$value = 0;
}
$temp[$pos] = log($scale) * $value;
}

return $temp;
}

// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");

// trigger some errors, first define a mixed array with a non-numeric item
echo "vector a ";
$a = array(2, 3, "foo", 5.5, 43.3, 21.11);
print_r($a);

// now generate second array
echo "---- vector b - a notice (b = log(PI) * a) ";
/* Value at position $pos is not a number, using 0 (zero) */
$b = scale_by_log($a, M_PI);
print_r($b);

// this is trouble, we pass a string instead of an array
echo "---- vector c - a warning ";
/* Incorrect input vector, array of values expected */
$c = scale_by_log("not array", 2.3);
var_dump($c); // NULL

// this is a critical error, log of zero or negative number is undefined
echo "---- vector d - fatal error ";
/* log(x) for x <= 0 is undefined, you used: scale = $scale" */
$d = scale_by_log($a, -2.5);
var_dump($d); // Never reached


// zde nachvál přidám <? a zjistím že to nefunguje spolehlivě
<?


?>



Já potřebuji aby mě to odchytilo jakoukoliv chybu v php a aby místo tý chyby (např.:Parse error: syntax error, unexpected '<' in *** adresa naschvál schována *** on line 100) poslal e-mail na určitou adresu.
Jinak díky alespoň za snahu.
koudi
Profil
Paulí
Tak to mi nějak nepomohlo.
Tak to ti asi není pomoci.

Ten kod sice ukazuje chyby ale ty pouze NASCHVÁL VYVOLANÉ.
Ty máš nějakou potřebu naschvál vyvolávat chyby?

To znamená že když tam nachvál přidám třeba před uzavřením php (?>) přidám <? tak se vyvolá chybu se kterou ten php nepočítal .... takže to nefunguje tak jak bych chtěl.....
Kdyby sis přečet ten manuál, tak zjistíš, že chyby typu parse error (a některé další) odchytávat nejdou.
Paulí
Profil
Tak díky alespoň za snahu.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: