ID: 50729 Updated by: degeb...@php.net Reported By: keithdavis at solidtechservice dot com Status: Bogus Bug Type: Scripting Engine problem Operating System: Windows 7 64 Bit PHP Version: 5.3.1 New Comment:
On my setup using PHP 5.3.1, this code: <?php function myErrorHandler($errno, $errstr, $errfile, $errline) { var_dump(error_reporting()); } set_error_handler('myErrorHandler', E_ALL); var_dump(error_reporting()); @include 'does-not-exist.php'; var_dump(error_reporting()); ?> Produces the following output: int(32767) int(0) int(0) int(32767) It is your own responsibility to check the error handling level inside your custom error handler. Previous Comments: ------------------------------------------------------------------------ [2010-01-12 15:17:50] keithdavis at solidtechservice dot com The manual states "Of particular note is that this value will be 0 if the statement that caused the error was prepended by the @ error-control operator. " This is NOT happening. ------------------------------------------------------------------------ [2010-01-12 15:15:27] keithdavis at solidtechservice dot com But it's NOT setting the error reporting to 0. It is a bug, see this reply to a bug done in 2002. http://bugs.php.net/bug.php?id=16570&edit=2 When I use the @, it is supposed to pass an error level of 0, but it does not do this. It still sets it to 1024 and does NOT set my reporting level to 0. ------------------------------------------------------------------------ [2010-01-12 15:12:49] col...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php @ temporarily sets error_reporting to 0, it doesn't prevent your handler to be called. You've to do the filtering in it based on error_reporting if you want to. ------------------------------------------------------------------------ [2010-01-12 15:07:12] keithdavis at solidtechservice dot com Description: ------------ The @ is supposed to set error level to 0 (at least, I think that is what it supposed to do), but that does not work with a custom error handler. I can reproduce this every time. Reproduce code: --------------- Set error handler: set_error_handler('ErrorHandler'); Code to generate error: $this->_bind = @ldap_bind($this->_conn, $this->_ad_username.$this->_account_suffix, $this->_ad_password); Error Handler Test: function ErrorHandler($iErrorNum, $sErrorMsg, $sErrorFile, $iErrorLineNum){ echo $iErrorNum; } Expected result: ---------------- No error message and an $iErroNum of 0. Actual result: -------------- error message: WARNING [2] ldap_bind(): Unable to bind to server: Can't contact LDAP server, Line: 140 in file C:\inetpub\Intranet_Local\library\classes\adLDAP.php $iErrorNum = 1024 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50729&edit=1