Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Własna funkcja obsługu błędów
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,
Mam skrypt do obsługi błędów. W jaki sposób można obdłużyć błędy typu np. PARSE ? czytałem gdzieś, że da się przy pomocy dołączenia na początku skryptu pliku z tą funkcją, czy tak to zadziała?
oto kod php:
  1. <?php
  2.  
  3. function SendErrorInfo ($email, $waga, $errstr, $errfile, $errline)
  4. {
  5. $url_path = parse_url($_SERVER['SERVER_NAME']); // pobieramy ciąg znaków składający się na adres domeny
  6. $url = ' http://'.$url_path['path'].$_SERVER['REQUEST_URI']; // pobieramy ciąg znaków składający się na adres domeny
  7. // temat
  8. $subject = 'System Error Reporting';
  9.  
  10. // wiadomołę
  11. $message = '
  12. <html>
  13. <head>
  14. <title>System Error Reporting</title>
  15. </head>
  16. <body><center>
  17. <b><font color="red">################# ERROR ###################<font></b><br><br>
  18. <b>Data wystpienia błędu:</b> '.date("d-m-Y").'<br>
  19. <b>Godzina:</b> '.date("H:i:s").'<br>
  20. <b>Typ błędu:</b> '.$waga.'<br>
  21. <b>Komunikat błędu:</b> '.$errstr.'<br>
  22. <b>Plik w którym wystąpił błęd:</b> '.$errfile.'<br>
  23. <b>Linia w której wystąpił błęd:</b> '.$errline.'<br>
  24. <b>Adres URL wystąpienia błędu:</b> '.$url.'<br>
  25. </body>
  26. </html>
  27. ';
  28.  
  29. $headers = 'MIME-Version: 1.0' . "\r\n";
  30. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  31. $headers .= 'From: System Error Reporting <'.$email.'>' . "\r\n";
  32.  
  33. // Wys__anie e-maila
  34. mail($email, $subject, $message, $headers);
  35. }
  36.  
  37.  
  38. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  39. function LogErr($errno, $errstr, $errfile, $errline)
  40. {
  41.  
  42. $waga = 0;
  43. $url_path = parse_url($_SERVER['SERVER_NAME']); // pobieramy ciąg znaków składający się na adres domeny
  44. $url = ' http://'.$url_path['path'].$_SERVER['REQUEST_URI']; // pobieramy ciąg znaków składający się na adres domeny
  45. switch ($errno) {
  46. case E_WARNING: $waga = ' E_WARNING '; $blad = TRUE; $typ = ' <b>Waga błędu</b> E_WARNING</b>'; break;
  47. case E_NOTICE: $waga = ' E_NOTICE '; $blad = FALSE; $typ =' <b>Waga błędu</b> E_NOTICE</b>'; break;
  48. case E_USER_ERROR: $waga = ' E_USER_ERROR '; $blad = TRUE; $typ =' <b>Waga błędu</b> E_USER_ERROR</b>'; break;
  49. case E_USER_WARNING: $waga = ' E_USER$blad = TRUE; _WARNING '; $blad = TRUE; $typ =' <b>Waga błędu</b> E_USER_WARNING</b>'; break;
  50. case E_USER_NOTICE: $waga = ' E_USER_NOTICE '; $blad = FALSE; $typ =' <b>Waga błędu</b> E_USER_NOTICE</b>'; break;
  51. }
  52. if ($blad == TRUE)
  53. {
  54.  
  55. echo '<html><head><TITLE>Wystąpił błąd!</title>
  56. <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8"></head>
  57. <h3>Wystąpił błąd</h3> <font color="red">';
  58. echo $typ;
  59. echo ' </font><br>';
  60.  
  61. $errstr = strtr($errstr, array('Undefined variable' => 'Niezdefiniowana zmienna', 'Failed opening' => 'Bład otwarcia',
  62. 'failed to open stream' => 'nie udało sić otworzyć strumienia', 'Cannot redeclare' => 'Nie można ponownie zgłosić funkcji',
  63. 'previously declared' => 'wcześniej zgłoszona była ', ' in ' => ' w ', 'Undefined index' => 'Niezdefiniowany index',
  64. 'No such file or directory' => 'Nie ma takiego pliku w katalogu', 'for inclusion' => 'do dołęczenia',
  65. 'Use of undefined constant' => 'Użyta niezdefiniowana stała', 'Wrong parameter count for mysql()' => 'Błędny parametr dla mysql()',
  66. 'A session had already been started' => 'Sesja już się rozpoczęła', 'ignoring' => 'zignorowano'));
  67.  
  68. echo (' <b>Komunikat o błędzie: </b>'.$errstr.'</b><br>');
  69. echo (' <b>Plik z błędem: </b>'.$errfile.'</b><br>');
  70. echo (' <b>Wiersz z błędem: </b>'.$errline.'</b>');
  71. $dopisz = "
  72.  
  73. //################# ERROR ###################
  74. Data wystąpienia błędu: ".date("d-m-Y")."
  75. Godzina: ".date("H:i:s")."
  76. Typ błędu: ".$waga."
  77. Komunikat błędu: ".$errstr."
  78. Plik w którym wystąpił błąd: ".$errfile."
  79. Linia w której wystąpił błąd: ".$errline."
  80. Adres URL wystąpienia błędu:".$url;
  81. $file = fopen('./error/LOG_'.date("H:i:s").'_'.date("d-m-Y").'.error', "a"); flock($file, 2); fwrite($file, $dopisz); flock($file, 3);
  82. fclose($file);
  83. SendErrorInfo ('support@autos24.pl', $waga, $errstr, $errfile, $errline);
  84.  
  85.  
  86. }
  87.  
  88. }
  89. //%%%%%%%%%%%%%%%%%%%% W__asne błędy %%%%%%%%%%%%%%%%%%%%%%%
  90.  
  91. function ErrorReport ($plik, $akcja, $errortype, $errorline)
  92. {
  93. $url_path = parse_url($_SERVER['SERVER_NAME']); // pobieramy ciąg znaków składający się na adres domeny
  94. $url = ' http://'.$url_path['path'].$_SERVER['REQUEST_URI']; // pobieramy ciąg znaków składający się na adres domeny
  95. $dopisz = " Data wystąpienia błędu: ".date("d-m-Y")."
  96. Godzina: ".date("H:i:s")."
  97. Typ błędu: ".$errortype."
  98. Plik w którym wystąpił błęd: ".$plik."
  99. Linia w której wystąpił błęd: ".$errorline."
  100. Adres URL wystąpienia błędu:".$url;
  101. $file = fopen('./error/'.date("H:i:s").'_'.date("d-m-Y").'.error', "a");
  102. flock($file, 2);
  103. fwrite($file, $dopisz);
  104. flock($file, 3);
  105. fclose($file);
  106. eval ($akcja);
  107. SendErrorInfo ('support@aaaa.pl', $waga, $errstr, $errfile, $errline);
  108. }
  109. ?>
wookieb
A czemu nie zapytasz sie manuala??
http://pl2.php.net/set_error_handler

Cytat
The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.
erix
Bez przesady...

~wookieb już podał odnośnik do wyjaśnienia.
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.