Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Error handler
Forum PHP.pl > Forum > PHP
Babcia@Stefa
Witam, mam coś takiego:

  1. <?php
  2. set_error_handler('otl_err', E_ALL);
  3. function otl_err($errNo, $errStr, $errFile, $errLine)
  4. {
  5. if($errNo == E_ERROR || $errNo == E_COMPILE_ERROR)
  6. {
  7. if(is_file('data/errors/' .$errNo. '.' .$errLine. '.txt'))
  8. {
  9. echo '<h1>Error</h1><br><li>This error alerdy has been reported.</li>';
  10. } else {
  11. echo '<h1>Error</h1><br><li>This error has been saved.</li><br><li><a href="javascript.history.back();">Back</a></li>';
  12. $fp = fopen('data/errors/' .$errNo. '.' .$errLine. '.txt', 'w');
  13. fwrite($fp, 'ErrNo: ' .$errNo. '
  14. Line: ' .$errLine. '
  15. Text: ' .$errStr. '
  16. File: ' .$errFile. '
  17. PHP: ' .PHP_VERSION. '
  18. OS: ' .PHP_OS. '');
  19. fclose($fp);
  20. }
  21. }
  22. }
  23. ?>


I co wstawić w warunek if aby funkcja reagowała tylko na błędy typu ,,parse error:", warning: function blablabla ... i undefined function blablabla (bez noticów)

Dziękuję, Babcia@Stefa
B3k
chyba tak to powinno wygladac:
  1. <?php
  2. if($errNo == E_ERROR || $errNo == E_COMPILE_ERROR || $errNo == E_USER_WARNING || $errNo == E_USER_NOTICE )
  3. ?>

ogolnie to masz dostepne:
E_NOTICE
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE
E_ALL
E_STRICT
E_RECOVERABLE_ERROR
tsharek
Nie da się zrobić żeby error handler reagował na parse error z prostego powodu: nie zostanie on wogle zainicjalizowany. Parse error jak sama nazwa wskazuje wywoływany jest przy parsowaniu kodu, czlyli jego tłumaczeniu na wewnętrzy język php. Dlatego jeżeli wystąpi nie wykonywany jest wogle skrypt.

Gdzieś kiedyś czytałem o wykrywaniu parse error w plikach includowanych. Chyba chodziło o to że parse error nie kończy wykonywanie całego skryptu, a jedynie includa, dlatego możliwe jest zoobowanie (zbuforowanie) wyjścia i sprawdzenie czy nie ma tam tekstów typu "Parse error..."
Jak już wspomniałem to GDZIEŚ KIEDYŚ o tym czytałem, nigdy nie sprawdałem, więc może się to okazać jako mit:) ale możesz spróbować:)
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.