Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Error handler
Babcia@Stefa
post 26.10.2007, 17:17:04
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


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


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
B3k
post 26.10.2007, 19:17:59
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.01.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
tsharek
post 27.10.2007, 12:11:08
Post #3





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

Ostrzeżenie: (0%)
-----


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ć:)


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 16:05