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

Reply via email to