Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyświetlanie błędów
Forum PHP.pl > Forum > Przedszkole
cadavre
Czy istnieje mozliwość, aby podczas wygenerowania odpowiedniego komunikatu błędu poprzez (or die) nie pojawiał się już standardowy błąd php?

Np.
  1. <?php
  2. mysql_connect() or die("To jezd błont!");
  3. ?>

Nie pojawiał się w php komunikat:
  1. Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\blabla on line xx
  2. To jezd błont!

Lecz samo
  1. To jezd błont!

error_reporting(0); oczywiście odpada.
nazihipi
http://pl.php.net/manual/pl/function.set-error-handler.php albo wyjątki
Cysiaczek
Możesz np 'uciszyć' poprzez
  1. <?php
  2. @mysql_connect() or die();
  3. ?>
cadavre
Otóż mam errorHandelra:
  1. <?php
  2. function ErrorHandler($errno, $errstr, $errfile, $errline) {
  3.  
  4. $error_msg = "$errno : $errstr : $errfile : $errline";
  5.  
  6. switch($errno) {
  7.  
  8. case E_USER_NOTICE:
  9. case E_NOTICE:
  10. $halt_script = false;
  11. $type = "<b>Ostrzeżenie:</b> ";
  12. break;
  13.  
  14. case E_USER_WARNING:
  15. case E_COMPILE_WARNING:
  16. case E_CORE_WARNING:
  17. case E_WARNING:
  18. $halt_script = false;
  19. $type = "<b>Uwaga:</b> ";
  20. break;
  21.  
  22. case E_USER_ERROR:
  23. case E_COMPILE_ERROR:
  24. case E_CORE_ERROR:
  25. case E_ERROR:
  26. $type = "<b>Błąd krytyczny:</b> ";
  27. break;
  28.  
  29. case E_PARSE:
  30. $type = "<b>Błąd wykonywania:</b> ";
  31. break;
  32.  
  33. default:
  34. $type = "<b>Nieznany błąd:</b> ";
  35. break;
  36. }
  37. $error_msg = $type . $error_msg;
  38. echo $error_msg;
  39.  
  40. }
  41.  
  42. set_error_handler(ErrorHandler);
  43. ?>
Jak coś takiego zaprzęgnąć do takiej funkcjonalności o jakiej wspominam w pierwszym poście?

@Cysiaczek: wyciszanie błędów nie działa podczas własnego handlera chyba, że trzeba odpowiednio coś uzupełnić?
nazihipi
zrób tak:

  1. <?php
  2.  
  3. set_error_handler( ErrorHandler, E_ALL );
  4.  
  5. function ErrorHandler( $errno, $errstr, $errfile, $errline ) {
  6.  
  7.  
  8. $error_msg = 'Nr: ' . $errno . 'Błąd: ' . $errstr . 'W pliku: '
  9.  . $errfile . 'W linii: ' . $errline;
  10.  
  11.  
  12.  if( $errno == E_WARNING || $errno == E_NOTICE || $errno == E_USER_NOTICE ) {
  13.  mail('twoj@email', 'WARNING: ' . date('H:m:s'), $error_msg);
  14.  }
  15.  else {
  16.  echo MESSAGE_FOR_GUEST;
  17.  mail('twoj@email', 'ERROR: ' . date('H:m:s'), $error_msg);
  18.   exit();
  19.  }
  20. }
  21.  
  22. ?>
cadavre
Z innej beczki:
  1. <?php
  2. if(!@include("file_that_not_exists.html")) { die("Błąd!"); }
  3. ?>

Jak odczytać jaki plik jest include'owany (w tym przypadku "file_that_not_exists.html")?
nazihipi
nie bardzo Cię rozumiem... przeciesz wiesz jaki plik dołączasz...
  1. <?php
  2. $file = 'config.inc.php';
  3.  
  4. if ( file_exists( $file ) ) {
  5.  require_once( $file );
  6.  echo 'Dołączony plik to: ' . $file;
  7. }
  8. else {
  9. echo 'Pliku ' . $file . ' nie udało się dołączyć';
  10. }
  11. ?>
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.