Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z obsługą błędów
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,
Napisałem własną funkcję obsługującą błedy i pojawił się taki problem, że nie mogę wyłączyć raportowania błędów typu E_NOTICE.
Kod:
  1. <?php
  2. //ini_set('display_errors',0);
  3. error_reporting(E_ALL ^ E_NOTICE);
  4. error_reporting(E_ALL ^ E_NOTICE);
  5. function SendErrorInfo ($email, $waga, $errstr, $errfile, $errline)
  6. {
  7.   if ($errno == 'E_NOTICE')
  8.     {$errno= NULL;
  9.     exit; };
  10. // temat
  11. $subject = 'System Error Reporting';
  12.  
  13. // wiadomo__Ä_
  14. $message = '
  15. <html>
  16. <head>
  17.  <title>System Error Reporting</title>
  18. </head>
  19. <body><center>
  20.    <b><font color="red">################# ERROR ###################<font></b><br><br>
  21.    <b>Data wystÄ_pienia b__Ä_du:</b> '.date("d-m-Y").'<br>
  22.    <b>Godzina:</b> '.date("H:i:s").'<br>
  23.    <b>Typ b__Ä_du:</b> '.$waga.'<br>
  24.    <b>Komunikat b__Ä_du:</b> '.$errstr.'<br>
  25.    <b>Plik w kt__rym wystÄ_pi__ b__Ä_d:</b> '.$errfile.'<br>
  26.    <b>Linia w kt__rej wystÄ_pi__ b__Ä_d:</b> '.$errline.'<br>
  27. </body>
  28. </html>
  29. ';
  30.  
  31. $headers  = 'MIME-Version: 1.0' . "r\n";
  32. $headers .= 'Content-type: text/html; charset=utf-8' . "r\n";
  33. $headers .= 'From: System Error Reporting <'.$email.'>' . "r\n";
  34.  
  35. // Wys__anie e-maila
  36. mail($email, $subject, $message, $headers);
  37. }
  38.  
  39.  
  40. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  41. function LogErr($errno, $errstr, $errfile, $errline)
  42. {
  43.    echo '<html><head><TITLE>WystÄ_pi__ b__Ä_d!</title>
  44.    <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8"></head>
  45.    <h3>WystÄ_pi__ b__Ä_d</h3> <font color="red">';
  46.     $waga = 0;
  47.     if ($errno == 'E_NOTICE')
  48.     {$errno= NULL;};
  49.    switch ($errno) {
  50.        case E_WARNING: $waga = ' E_WARNING '; echo(' <b>Waga b__Ä_du</b> E_WARNING</b>'); break;
  51.        case E_NOTICE: $waga = ' E_NOTICE '; echo(' <b>Waga b__Ä_du</b> E_NOTICE</b>'); break;
  52.        case E_USER_ERROR: $waga = ' E_USER_ERROR '; echo(' <b>Waga b__Ä_du</b> E_USER_ERROR</b>'); break;
  53.        case E_USER_WARNING: $waga = ' E_USER_WARNING '; echo(' <b>Waga b__Ä_du</b> E_USER_WARNING</b>'); break;
  54.        case E_USER_NOTICE: $waga = ' E_USER_NOTICE '; echo(' <b>Waga b__Ä_du</b> E_USER_NOTICE</b>'); break;
  55.            }
  56.    echo '-> </font><br>';
  57.        $errstr = strtr($errstr, array('Undefined variable' => 'Niezdefiniowana zmienna', 'Failed opening' => 'B__ad otwarcia',
  58.    'failed to open stream' => 'nie uda__o siÄ_ otworzyÄ_ strumienia', 'Cannot redeclare' => 'Nie mo__na ponownie zg__osiÄ_ funkcji',
  59.    'previously declared' => 'wcze__niej zg__oszona by__a ', ' in ' => ' w ', 'Undefined index' => 'Niezdefiniowany index',
  60.    'No such file or directory' => 'Nie ma takiego pliku w katalogu', 'for inclusion' => 'do do__Ä_czenia',
  61.    'Use of undefined constant' => 'U__yta niezdefiniowana sta__a', 'Wrong parameter count for mysql()' => 'B__Ä_dny parametr dla mysql()',
  62.     '' => ''));
  63.  
  64.    echo (' <b>Komunikat o b__Ä_dzie: </b>'.$errstr.'</b><br>');
  65.    echo (' <b>Plik z b__Ä_dem: </b>'.$errfile.'</b><br>');
  66.    echo (' <b>Wiersz z b__Ä_dem: </b>'.$errline.'</b>');
  67.    $dopisz = "
  68.  
  69.    //################# ERROR ###################
  70.    Data wystÄ_pienia b__Ä_du: ".date("d-m-Y")."
  71.    Godzina: ".date("H:i:s")."
  72.    Typ b__Ä_du: ".$waga."
  73.    Komunikat b__Ä_du: ".$errstr."
  74.    Plik w kt__rym wystÄ_pi__ b__Ä_d: ".$errfile."
  75.    Linia w kt__rej wystÄ_pi__ b__Ä_d: ".$errline;
  76.    $file = fopen('./error/LOG_'.date("H:i:s").'_'.date("d-m-Y").'.error', "a"); flock($file, 2); fwrite($file, $dopisz); flock($file, 3);
  77.    fclose($file);
  78.    SendErrorInfo ('support@autos24.pl', $waga, $errstr, $errfile, $errline);
  79. }
  80. //%%%%%%%%%%%%%%%%%%%% W__asne b__Ä_dy %%%%%%%%%%%%%%%%%%%%%%%
  81.  
  82. function ErrorReport ($plik, $akcja, $errortype, $errorline)
  83. {
  84.    $dopisz = "  Data wystÄ_pienia b__Ä_du: ".date("d-m-Y")."
  85.    Godzina: ".date("H:i:s")."
  86.    Typ b__Ä_du: ".$errortype."
  87.    Plik w kt__rym wystÄ_pi__ b__Ä_d: ".$plik."
  88.    Linia w kt__rej wystÄ_pi__ b__Ä_d: ".$errorline;
  89.    $file = fopen('./error/'.date("H:i:s").'_'.date("d-m-Y").'.error', "a");
  90.    flock($file, 2);
  91.    fwrite($file, $dopisz);
  92.    flock($file, 3);
  93.    fclose($file);
  94.    eval ($akcja);
  95.    SendErrorInfo ('support@autos24.pl', $waga, $errstr, $errfile, $errline);
  96. }
  97. ?>
ayeo
Witam!

Manual

Wiesz co to znaczy "z wyjątkiem" ? tongue.gif

Pozdrawiam!
patryk9200
Cytat(ayeo @ 24.07.2009, 11:17:51 ) *
Witam!

Manual

Wiesz co to znaczy "z wyjątkiem" ? tongue.gif

Pozdrawiam!


Przecież mam tak jak w manualu i nie działa...
Myślisz, że nie szukałem rozwiązania?... szukałem ale nie znalazłem dlatego tu piszę...
nospor
na szybko rzuca sie taki blad w oczy:
if ($errno == 'E_NOTICE')

przeciez nigdzie nie masz zmiennej $errno w funkcji SendErrorInfo
patryk9200
Cytat(nospor @ 24.07.2009, 11:29:49 ) *
na szybko rzuca sie taki blad w oczy:
if ($errno == 'E_NOTICE')

przeciez nigdzie nie masz zmiennej $errno w funkcji SendErrorInfo


ona istnieje, pochodzi z handlera, to akurat dziła i właśnie zrobiłem to zeby sprawdzić czy otrzymuję info o E_NOTICE,
tak ogółem to bez mojego kodu gdy dam error_reporting(E_ALL ^ E_NOTICE); to mi E_NOTICE nie wyświetla, natomiast gdy mój kod istnieje to mi go wywala.... więc nie wiem co mam źle...
nospor
Cytat
ona istnieje, pochodzi z handlera

Nie, nie istnieje. w funkcji SendErrorInfo() zmienna ta nie istnieje.
ayeo
  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE);
  3. ?>


To ^ oznacza z wyjątkiem!

Pozdrawiam!

edit: teraz widzę, że źle przeczytałem Twojego posta winksmiley.jpg Zwracam honor, mój błąd
patryk9200
Cytat(nospor @ 24.07.2009, 11:41:10 ) *
Nie, nie istnieje. w funkcji SendErrorInfo() zmienna ta nie istnieje.


To skoro nie istnieje to niby z kąd coś co nie istnieje ma wartość?? biggrin.gif:D polecasm jeszcze raz przeglądnij kod biggrin.gif to zobaczysz jak to zrobiłem winksmiley.jpg
nospor
  1. <?php
  2. function SendErrorInfo ($email, $waga, $errstr, $errfile, $errline)
  3. {
  4.  if ($errno == 'E_NOTICE')
  5. ?>

pokaz mi prosze, gdzie tu jest $errno (oprocz tego if, gdzie juz sprawdzasz jej wartosc). Jesli myslisz, ze $errno bedzie widoczna z deklaracji z innych funkcji, to sie mylisz.
ayeo
Witam!

Zrób sobie var_dump( $errno ); w tej funkcji to zobaczysz, że nic tam nie ma.

Pozdrawiam!
patryk9200
faktycznie NULL no więc to coś usunąłem i taki mam kod, jak wyłączyć raportowanie E_NOTICE??
kod:
  1. <?php
  2. //ini_set('display_errors',0);
  3. error_reporting(E_ALL ^ E_NOTICE);
  4. error_reporting(E_ALL ^ E_NOTICE);
  5. ini_set('error_reporting', E_ALL ^ E_NOTICE);
  6. function SendErrorInfo ($email, $waga, $errstr, $errfile, $errline)
  7. {
  8.  
  9. // temat
  10. $subject = 'System Error Reporting';
  11.  
  12. // wiadomo__Ä_
  13. $message = '
  14. <html>
  15. <head>
  16.  <title>System Error Reporting</title>
  17. </head>
  18. <body><center>
  19.    <b><font color="red">################# ERROR ###################<font></b><br><br>
  20.    <b>Data wystÄ_pienia b__Ä_du:</b> '.date("d-m-Y").'<br>
  21.    <b>Godzina:</b> '.date("H:i:s").'<br>
  22.    <b>Typ b__Ä_du:</b> '.$waga.'<br>
  23.    <b>Komunikat b__Ä_du:</b> '.$errstr.'<br>
  24.    <b>Plik w kt__rym wystÄ_pi__ b__Ä_d:</b> '.$errfile.'<br>
  25.    <b>Linia w kt__rej wystÄ_pi__ b__Ä_d:</b> '.$errline.'<br>
  26. </body>
  27. </html>
  28. ';
  29.  
  30. $headers  = 'MIME-Version: 1.0' . "r\n";
  31. $headers .= 'Content-type: text/html; charset=utf-8' . "r\n";
  32. $headers .= 'From: System Error Reporting <'.$email.'>' . "r\n";
  33.  
  34. // Wys__anie e-maila
  35. mail($email, $subject, $message, $headers);
  36. }
  37.  
  38.  
  39. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  40. function LogErr($errno, $errstr, $errfile, $errline)
  41. {
  42.    echo '<html><head><TITLE>WystÄ_pi__ b__Ä_d!</title>
  43.    <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8"></head>
  44.    <h3>WystÄ_pi__ b__Ä_d</h3> <font color="red">';
  45.     $waga = 0;
  46.  
  47.    switch ($errno) {
  48.        case E_WARNING: $waga = ' E_WARNING '; echo(' <b>Waga b__Ä_du</b> E_WARNING</b>'); break;
  49.        case E_NOTICE: $waga = ' E_NOTICE '; echo(' <b>Waga b__Ä_du</b> E_NOTICE</b>'); break;
  50.        case E_USER_ERROR: $waga = ' E_USER_ERROR '; echo(' <b>Waga b__Ä_du</b> E_USER_ERROR</b>'); break;
  51.        case E_USER_WARNING: $waga = ' E_USER_WARNING '; echo(' <b>Waga b__Ä_du</b> E_USER_WARNING</b>'); break;
  52.        case E_USER_NOTICE: $waga = ' E_USER_NOTICE '; echo(' <b>Waga b__Ä_du</b> E_USER_NOTICE</b>'); break;
  53.            }
  54.    echo '-> </font><br>';
  55.        $errstr = strtr($errstr, array('Undefined variable' => 'Niezdefiniowana zmienna', 'Failed opening' => 'B__ad otwarcia',
  56.    'failed to open stream' => 'nie uda__o siÄ_ otworzyÄ_ strumienia', 'Cannot redeclare' => 'Nie mo__na ponownie zg__osiÄ_ funkcji',
  57.    'previously declared' => 'wcze__niej zg__oszona by__a ', ' in ' => ' w ', 'Undefined index' => 'Niezdefiniowany index',
  58.    'No such file or directory' => 'Nie ma takiego pliku w katalogu', 'for inclusion' => 'do do__Ä_czenia',
  59.    'Use of undefined constant' => 'U__yta niezdefiniowana sta__a', 'Wrong parameter count for mysql()' => 'B__Ä_dny parametr dla mysql()',
  60.     '' => ''));
  61.  
  62.    echo (' <b>Komunikat o b__Ä_dzie: </b>'.$errstr.'</b><br>');
  63.    echo (' <b>Plik z b__Ä_dem: </b>'.$errfile.'</b><br>');
  64.    echo (' <b>Wiersz z b__Ä_dem: </b>'.$errline.'</b>');
  65.    $dopisz = "
  66.  
  67.    //################# ERROR ###################
  68.    Data wystÄ_pienia b__Ä_du: ".date("d-m-Y")."
  69.    Godzina: ".date("H:i:s")."
  70.    Typ b__Ä_du: ".$waga."
  71.    Komunikat b__Ä_du: ".$errstr."
  72.    Plik w kt__rym wystÄ_pi__ b__Ä_d: ".$errfile."
  73.    Linia w kt__rej wystÄ_pi__ b__Ä_d: ".$errline;
  74.    $file = fopen('./error/LOG_'.date("H:i:s").'_'.date("d-m-Y").'.error', "a"); flock($file, 2); fwrite($file, $dopisz); flock($file, 3);
  75.    fclose($file);
  76.    SendErrorInfo ('support@autos24.pl', $waga, $errstr, $errfile, $errline);
  77.  
  78. }
  79. //%%%%%%%%%%%%%%%%%%%% W__asne b__Ä_dy %%%%%%%%%%%%%%%%%%%%%%%
  80.  
  81. function ErrorReport ($plik, $akcja, $errortype, $errorline)
  82. {
  83.    $dopisz = "  Data wystÄ_pienia b__Ä_du: ".date("d-m-Y")."
  84.    Godzina: ".date("H:i:s")."
  85.    Typ b__Ä_du: ".$errortype."
  86.    Plik w kt__rym wystÄ_pi__ b__Ä_d: ".$plik."
  87.    Linia w kt__rej wystÄ_pi__ b__Ä_d: ".$errorline;
  88.    $file = fopen('./error/'.date("H:i:s").'_'.date("d-m-Y").'.error', "a");
  89.    flock($file, 2);
  90.    fwrite($file, $dopisz);
  91.    flock($file, 3);
  92.    fclose($file);
  93.    eval ($akcja);
  94.    SendErrorInfo ('support@autos24.pl', $waga, $errstr, $errfile, $errline);
  95. }
  96. ?>


czy ktoś wie?
Zyx
Cytat z dokumentacji na stronie poświęconej funkcji set_error_handler():

Cytat
It is important to remember that the standard PHP error handler is completely bypassed. error_reporting() settings will have no effect and your error handler will be called regardless - however you are still able to read the current value of error_reporting and act appropriately. Of particular note is that this value will be 0 if the statement that caused the error was prepended by the @ error-control operator.


Innymi słowy, odsiewem E_NOTICE musi zająć się Twoja funkcja, bo error_reporting() jest wtedy ignorowany.
patryk9200
Cytat(Zyx @ 24.07.2009, 15:41:49 ) *
Cytat z dokumentacji na stronie poświęconej funkcji set_error_handler():



Innymi słowy, odsiewem E_NOTICE musi zająć się Twoja funkcja, bo error_reporting() jest wtedy ignorowany.


ok dzięki kapuję tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.