tengo un dilema , creo que puede ser por falta de entendimiento de los conceptos creo yop.
quiero que se muestren todos mis errores pero veo que NO me captura los errores que se
producen en el Bootstrap.php
¿Como haria para capturar hasta los error FATAL ERROR o errores de PHP ?
Errores de sintaxis, clase que no exista, etc
gracias
EJEMPLO:
He forzado el error, colocando una ruta de directorio erronea la ubicacion del log en el
application.ini
Código PHP:
Ver original
Código PHP:
Ver original
//application/modules/default/controllers/ErrorController.php <?php /** * Description of ErrorController * * @author MALCON */ class Default_ErrorController extends Zend_Controller_Action { private $_logger; private $_config; public function init() { $this->_config = Zend_Registry::get('config'); $this->_logger = Zend_Registry::get('logger'); } public function errorAction() { $errors = $this->_getParam('error_handler'); $modulename = $errors->request->getModuleName(); $this->view->modulename = $modulename; $this->view->controllername = $errors->request->getControllerName(); $this->view->actionname = $errors->request->getActionName(); $this->view->mensaje= ''; $this->view->env = APPLICATION_ENV; //cambiar layout de error si el modulo es diferente al //backoffice if ($modulename != 'backoffice') { $this->initView(); Zend_Layout::getMvcInstance()->setLayout('error'); } switch ($errors->type) { //Error MVC case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: //devolveremos un código 404 de página inexistente $this->getResponse()->setHttpResponseCode(404); $this->_forward('notfound'); break; //No es un error MVC default: //se cogenlas excepciones que han saltado $errores = $this->getResponse()->getException(); //se trata cada tipo de excepcion foreach ($errores as $error) { case 'Zend_Db_Statement_Exception': $this->view->mensaje = 'ERROR DE BBDD: ' . $error->getMessage(); break; case 'Zend_View_Exception': $this->view->mensaje = 'ERROR EN LA VISTA: ' . $error->getMessage(); break; case 'Zend_Loader_Exception': $this->view->mensaje = 'ERROR AL CARGAR: ' . $error->getMessage(); break; case 'Zend_Form_Exception': $this->view->mensaje = 'ERROR EN EL FORMULARIO: ' . $error->getMessage(); break; //cualquier error no especifico default: $this->view->mensaje= 'Error desconocido!'; break; } //end switch(get_class($error)) } break; //terminar con los errores no MVC } if ($this->getInvokeArg('displayExceptions') == true) { $this->view->exception = $errors->exception; } $this->view->request = $errors->request; //mensaje de email del error if (APPLICATION_ENV == 'production') { $body = $this->view->mensaje . "\n" . '<pre>' . $errors->exception->getTraceAsString() . '</pre>'; $this->_logger->crit($body); //guardar log de error $this->enviarcorreo($body); // enviar por correo error } return; } public function enviarcorreo($body) { try { $mail = new Zend_Mail(); $mail->setFrom($this->_config->mail->de, 'Soporte'); $mail->addTo($this->_config->mail->para, 'Receptor'); $mail->setSubject($this->_config->mail->asunto); $mail->setBodyHtml($body); $mail->send(); $this->_logger->info('mail enviado exitosamente a ' . $this->_config->mail->para); } catch (Zend_Mail_Exception $e) { $this->_logger->crit('Problemas al enviar email a ' . $this->_config->mail->para .'<br/>' . 'Mensaje : ' . $e->getMessage()); throw $e; } } }