Bug #14687 Updated: Ignoring @'s after set_error_handler() is used

From: Date: Mon, 31 Dec 2001 10:47:33 +0000
Subject: Bug #14687 Updated: Ignoring @'s after set_error_handler() is used
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-75417@lists.php.net to get a copy of this message
ID: 14687 User updated by: matthew_dean@hotmail.com Reported By: matthew_dean@hotmail.com Status: Closed Bug Type: Scripting Engine problem Operating System: Redhat 7.0, Solaris 7 PHP Version: 4.0.6 New Comment: Ah, ok, thanks. - I understand now. It was only the meaning of the @ operator I didn't follow. I'd misinterpreted the docs. I thought that prepending an @ set the errorNum to 0 ( either that or it suppressed the call to the error handler), when in fact it sets the global error level to 0 for the @-ed expression. I thought the @ was: 'Supress errors' Actually it's: 'Trigger an error as normal, but with the error level temporarily set to 0' Thanks, Matt Previous Comments: ------------------------------------------------------------------------ [2001-12-28 09:09:27] zeev@php.net It's the programmer's responsibility to honor error_reporting in the error handler. The error handler will be called even if the error that occured is not inside the error_reporting mask - to allow you to conduct logging, recovery, etc. You can easily honor it by using the return value of error_reporting(), and compare it (using &) with the error level that you got. ------------------------------------------------------------------------ [2001-12-24 10:16:05] matthew_dean@hotmail.com <?php function myErrorHandler($errorNum) { echo "$errorNum\n"; } set_error_handler("myErrorHandler"); #error_reporting (E_ALL);#doesn't change the bug behaviour @$j=$i; ?> This echos: 8 Yet according to: http://www.php.net/manual/en/function.set-error-handler.php "Of particular note is that this value will be 0 if the statement that caused the error was prepended by the @ error-control operator. " I've tried this on 4.0.4pl1 and 4.0.6 The changelog for 4.1.0 doesn't mention a fix. The @ works fine for lines executed before set_error_handler(). Here's one of the configure lines, though (to me) it doesn't seem likely to be a compiley issue... './configure' '--with-db' '--enable-dba' '--with-gdbm' '--with-xml' '--with-oci8=/usr/local/oracle/' '--with-apxs=/usr/local/apache-1.3.14/bin/apxs' '--with-mysql=/usr/local/mysql' '--with-gd' '--with-sablot' Thanks! ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=14687&edit=1

« previous php.dev (#75417) next »