summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Gibbs <nathan@cmpublishers.com>2023-06-12 09:43:06 -0400
committerGitHub <noreply@github.com>2023-06-12 15:43:06 +0200
commit50db1018c3d2ac9ef73aeaf0bb545d606c88f7f3 (patch)
treeccd27101069fc9562522a73a9649697e80d12271
parentfc0093064d6eaf1862f3bf9ff2c75f3238903578 (diff)
downloadadodb-50db1018c3d2ac9ef73aeaf0bb545d606c88f7f3.tar.gz
adodb-50db1018c3d2ac9ef73aeaf0bb545d606c88f7f3.tar.bz2
adodb-50db1018c3d2ac9ef73aeaf0bb545d606c88f7f3.zip
Respect @ operator in all error handlers on PHP 8
error_reporting()'s return value for suppressed errors changed from 0 to 4437 in PHP 8.0.0 [1]. Follow up on commit 943ac8a7de20117d85860a9b67f9eb65c5dfe4d7. Fixes #981 (PR #984)
-rw-r--r--adodb-errorhandler.inc.php9
-rw-r--r--adodb-errorpear.inc.php10
2 files changed, 17 insertions, 2 deletions
diff --git a/adodb-errorhandler.inc.php b/adodb-errorhandler.inc.php
index 0cd3f218..1d3b9e9e 100644
--- a/adodb-errorhandler.inc.php
+++ b/adodb-errorhandler.inc.php
@@ -37,7 +37,14 @@ if (!defined('ADODB_ERROR_HANDLER')) define('ADODB_ERROR_HANDLER','ADODB_Error_H
*/
function ADODB_Error_Handler($dbms, $fn, $errno, $errmsg, $p1, $p2, &$thisConnection)
{
- if (error_reporting() == 0) return; // obey @ protocol
+ // Do not throw if errors are suppressed by @ operator
+ // error_reporting() value for suppressed errors changed in PHP 8.0.0
+ $suppressed = version_compare(PHP_VERSION, '8.0.0', '<')
+ ? 0
+ : E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE;
+ if (error_reporting() == $suppressed) {
+ return;
+ }
switch($fn) {
case 'EXECUTE':
$sql = $p1;
diff --git a/adodb-errorpear.inc.php b/adodb-errorpear.inc.php
index 2bb15947..7b173da8 100644
--- a/adodb-errorpear.inc.php
+++ b/adodb-errorpear.inc.php
@@ -52,7 +52,15 @@ function ADODB_Error_PEAR($dbms, $fn, $errno, $errmsg, $p1=false, $p2=false)
{
global $ADODB_Last_PEAR_Error;
- if (error_reporting() == 0) return; // obey @ protocol
+ // Do not throw if errors are suppressed by @ operator
+ // error_reporting() value for suppressed errors changed in PHP 8.0.0
+ $suppressed = version_compare(PHP_VERSION, '8.0.0', '<')
+ ? 0
+ : E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE;
+ if (error_reporting() == $suppressed) {
+ return;
+ }
+
switch($fn) {
case 'EXECUTE':
$sql = $p1;