But I want to catch errors that are not suppressed with @. If I check if error reporting is on, I will catch all of them or no one.
Regards, Saša Stamenković On Mon, Sep 28, 2009 at 1:36 PM, Karol Grecki <kgre...@gmail.com> wrote: > > There's answer for it in the code sample I gave you. > Error handler will intercept all errors even if they were silenced with @ > operator. > You need to check if error reporting is disabled at the time the error > happens. > > Karol > > > umpirsky wrote: > > > > Now I get a lot of crap catched :) > > For example: > > > > > fopen(/mnt/home/sasas/www/auto/application/controllers/ImagesController.php) > > [ function.fopen function.fopen ]: failed to open stream: No > > such file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > > > which is ok, but this: > > > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/FormLabel.php) [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/FormLabel.php) [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/FormSelect.php) > [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/FormButton.php) > [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/FormButton.php) > [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/Form.php) [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/Form.php) [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/Layout.php) [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > fopen(/mnt/home/sasas/www/auto/application/views/helpers/Layout.php) [ > > function.fopen function.fopen ]: failed to open stream: No such > > file or directory in /mnt/home/sasas/www/Zend/Loader.php #165. > > > > which is strange, why loader looks for helpers in my helpers path, and > not > > in zf library first? > > > > Regards, > > Saša Stamenković > > > > > > On Mon, Sep 28, 2009 at 1:08 PM, Саша Стаменковић > > <umpir...@gmail.com>wrote: > > > >> Nice answer Grecki, thanks. > >> require_once 'controllers/ErrorController.php'; > >> set_error_handler(array('ErrorController', 'phpError')); > >> > >> fixed problem. Strange :) > >> > >> Regards, > >> Saša Stamenković > >> > >> > >> > >> On Mon, Sep 28, 2009 at 1:03 PM, Karol Grecki <kgre...@gmail.com> > wrote: > >> > >>> > >>> If you named your functions differently you need to modify the code > >>> accordingly. > >>> Also, make sure that this class is actually loaded or can be loaded > with > >>> autoloader before you try to use it and register the error handler. > >>> > >>> Regards > >>> Karol > >>> > >>> > >>> > >>> umpirsky wrote: > >>> > > >>> > *Warning*: set_error_handler() expects the argument > >>> > (ErrorController::phpError) to be a valid callback in * > >>> > /mnt/home/sasas/www/auto/application/Bootstrap.php* on line *16* > >>> > > >>> > Regards, > >>> > Saša Stamenković > >>> > > >>> > > >>> > On Mon, Sep 28, 2009 at 12:29 PM, Karol Grecki <kgre...@gmail.com> > >>> wrote: > >>> > > >>> >> > >>> >> Try this, it works for me. > >>> >> > >>> >> class X_Error_Handler > >>> >> { > >>> >> public static function handle($errno, $errstr, $errfile, > $errline) > >>> >> { > >>> >> //this allows error suppression in 3rd party code to work > >>> >> if (!error_reporting()) return; > >>> >> > >>> >> throw new X_RuntimeException($errstr . " in > >>> $errfile:$errline", > >>> >> $errno); > >>> >> } > >>> >> > >>> >> public static function set() > >>> >> { > >>> >> set_error_handler(array(__CLASS__, 'handle')); > >>> >> } > >>> >> } > >>> >> > >>> >> Then you call X_Error_Handler::set() in your bootstrap and built in > >>> php > >>> >> errors will bubble up to error controller as exceptions. > >>> >> Bear in mind there are some limitation to it, like fatal errors > >>> cannot > >>> be > >>> >> handled this way and not everything can be captured in the error > >>> >> controller. > >>> >> You need a try-catch block around your whole dispatch loop to catch > >>> >> errors > >>> >> in plugins etc. > >>> >> > >>> >> Regards > >>> >> Karol > >>> >> > >>> >> > >>> >> umpirsky wrote: > >>> >> > > >>> >> > I'm trying to do this with set_error_handler(), my will is to > >>> trigger > >>> >> > Error > >>> >> > controller and catch this as application error, since I want to > log > >>> all > >>> >> > errors in one place - Error controller. > >>> >> > I tried with setting error handler in bootstrap to function in > >>> >> index.php > >>> >> > and > >>> >> > that function calls error controller statically, but no success. > >>> There > >>> >> > must > >>> >> > be some easy way to do this. > >>> >> > > >>> >> > Anyone know? > >>> >> > > >>> >> > Regards, > >>> >> > Saša Stamenković > >>> >> > > >>> >> > > >>> >> > >>> >> -- > >>> >> View this message in context: > >>> >> > >>> > http://www.nabble.com/Turn-PHP-errors-warnings-notices-into-exceptions-tp25591556p25643507.html > >>> >> Sent from the Zend Framework mailing list archive at Nabble.com. > >>> >> > >>> >> > >>> > > >>> > > >>> > >>> -- > >>> View this message in context: > >>> > http://www.nabble.com/Turn-PHP-errors-warnings-notices-into-exceptions-tp25591556p25643850.html > >>> Sent from the Zend Framework mailing list archive at Nabble.com. > >>> > >>> > >> > > > > > > -- > View this message in context: > http://www.nabble.com/Turn-PHP-errors-warnings-notices-into-exceptions-tp25591556p25644229.html > Sent from the Zend Framework mailing list archive at Nabble.com. > >