I am currently using Zend Framework 1. In bootstrap i will have
protected function _initLogger() {
//this is where I create log to file
}
The issue is when the log file have write protected or have issue the error will display to browser with directory location etc.
I don't want to suppress the message but how can I custom this error so it will not show too much information
my application.ini
phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Try this.
Tell Zend Framework to not handle exceptions. Do this in your application.ini
resources.frontController.throwExceptions = 1
Do following in your Bootstrap class.
Define a custom method to handle exceptions.
public function __handleExceptions(Exception $e){
//render a view with a simple error message for the user
//and send an email with the error to admin
}
Override the _bootstrap()
and run()
methods of Zend_Application_Bootstrap_Bootstrap
in your Bootstrap class and catch the exceptions thrown during the bootstrap process or while running the application and call your exception handler as shown below.
protected function _bootstrap($resource = null)
{
try {
parent::_bootstrap($resource);
} catch(Exception $e) {
$this->__handleExecptions($e);
}
}
public function run()
{
try {
parent::run();
} catch(Exception $e) {
$this->__handleExecptions($e);
}
}
This should handle all your exceptions. For handling errors register your own error handler as shown below.
public function _initErrorHandler(){
set_error_handler(array($this, '__hanleErrors'));
}
public function __hanleErrors($errNo, $errStr, $errFile, $errLine){
//render a view with a simple error message for the user
//and send an email with the error to admin
}
Now as you manually handle both errors and exceptions you can show user a simple message (by rendering a view) and email technical details to admin.
Hope this helps.