Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Raportowanie błedów
Forum PHP.pl > Forum > PHP > Frameworki
csharp
chciałem włączyć raportowanie błędów ZENDa na maila, pojawia się błąd - dostaje nową wiadomość.

Generalnie wszystko mi działa, stworzyłem sobie klasę do wysyłania wiadomości i z poziomu ErrorController.php odwołuje się do tej funkcji, zastanawiam się tylko czy można jeszcze inne rzeczy wyciągnąć z błedów i czy prawidłowo to robię?

dwie rzeczy sobie wyciągam:

  1. $send = new My_Mail();
  2. $send->mailErrors($errors->exception, var_export($errors->request, true));


w zasadzie mail, który do mnie przychodzi jest wystarczający.

Co zrobić z błędami, które nie są wyświetlane przez ErrorController? które całkowicie wywalają aplikacje i przy .htaccess włączonym na staging nie wyświetlają nic.. da się jakoś zrobić powiadamianie o takich błędach?

  1. $errors = $this->_getParam('error_handler');
  2.  
  3. if (!$errors || !$errors instanceof ArrayObject) {
  4. $this->view->message = 'You have reached the error page';
  5. return;
  6. }
  7.  
  8. switch ($errors->type) {
  9. case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
  10. case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
  11. case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
  12. // 404 error -- controller or action not found
  13. $this->getResponse()->setHttpResponseCode(404);
  14. $priority = Zend_Log::NOTICE;
  15. $this->view->message = 'Strona, której poszukujesz nie została znaleziona.';
  16. break;
  17. default:
  18. // application error
  19. $this->getResponse()->setHttpResponseCode(500);
  20. $priority = Zend_Log::CRIT;
  21. $this->view->message = 'Błąd aplikacji';
  22. break;
  23. }
  24.  
  25. // Log exception, if logger available
  26. if ($log = $this->getLog()) {
  27. $log->log($this->view->message, $priority, $errors->exception);
  28. $log->log('Request Parameters', $priority, $errors->request->getParams());
  29. }
  30.  
  31. // conditionally display exceptions
  32. if ($this->getInvokeArg('displayExceptions') == true) {
  33. $this->view->exception = $errors->exception;
  34. }
  35. $this->view->request = $errors->request;
  36.  
  37. $send = new My_Mail();
  38. $send->mailErrors($errors->exception, var_export($errors->request, true));
  39. }
  40.  
  41. public function getLog()
  42. {
  43. $bootstrap = $this->getInvokeArg('bootstrap');
  44. if (!$bootstrap->hasResource('Log')) {
  45. return false;
  46. }
  47. $log = $bootstrap->getResource('Log');
  48. return $log;
  49. }
irmidjusz
set_error_handler i set_exception_handler
csharp
no tak, ale jak mam fatal error i skrypt jest przerywany?

ma ktoś jeszcze jakieś pomysły?
irmidjusz
przecież jest wyraźnie napisane w manualu:
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.

If errors occur before the script is executed (e.g. on file uploads) the custom error handler cannot be called since it is not registered at that time.


Co możesz zrobić? hmm trzeba by program PHP uruchamiać wewnątrz zwirtualizowanego środowiska wykonawczego, które monitoruje stan aplikacji i obsługuje odpowiednio błędy wink.gif tongue.gif
csharp
nie będę przesadzać już biggrin.gif dzięki
Thommee

W logach serwera, apache'a coś powinno się odłożyć.
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.