Doc #80548 [Com]: Value or error_reporting() within handler with errors suppressed is 4437, not 0

From: Date: Thu, 24 Dec 2020 16:03:26 +0000
Subject: Doc #80548 [Com]: Value or error_reporting() within handler with errors suppressed is 4437, not 0
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-18316@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80548&edit=1

 ID:                 80548
 Comment by:         jr dot johnrowe555 at gmail dot com
 Reported by:        dregad at mantisbt dot org
 Summary:            Value or error_reporting() within handler with
                     errors suppressed is 4437, not 0
 Status:             Verified
 Type:               Documentation Problem
 Package:            Documentation problem
 PHP Version:        8.0.0
 Block user comment: N
 Private report:     N

 New Comment:

This was really helpful for me as I was trying to fix a bug in my garage's website too.

Regards,
https://apexautoparts.co.uk/


Previous Comments:
------------------------------------------------------------------------
[2020-12-24 12:29:37] dregad at mantisbt dot org

Thanks for the fast response.

I did check the migration guide, but for some reason this bit escaped my attention. Guess I need
glasses ;-)

Merry Xmas

------------------------------------------------------------------------
[2020-12-24 12:05:25] cmb@php.net

This is a deliberate change, and already documented in the
migration guide[1] (search for "the @ operator").  It is indeed
not yet documented in the manual proper.

[1] <https://www.php.net/manual/en/migration80.incompatible.php>

------------------------------------------------------------------------
[2020-12-24 10:24:54] dregad at mantisbt dot org

Description:
------------
According to set_error_handler documentation [1],
"current value of error_reporting [...] will be 0 if the statement that caused the error was
prepended by the @ error-control operator."

This works as documented with PHP 7.4, but not in 8.0.0 where error_reporting = 4437.

I'm not sure whether this desired behavior or not, but if it is then documentation is
incorrect.

[1]: https://www.php.net/manual/en/function.set-error-handler.php


Test script:
---------------
<?php
function error_handler( $p_type, $p_error, $p_file, $p_line ) {
	echo "error_reporting in handler: ", error_reporting(), PHP_EOL;
}
set_error_handler( 'error_handler' );
@date_default_timezone_set('');


Expected result:
----------------
error_reporting = 0

Actual result:
--------------
error_reporting = 4437
(with PHP 7.4, error_reporting = 0 as expected)


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=80548&edit=1


Thread (6 messages)

« previous php.doc.bugs (#18316) next »