It looks like there are quite some posts on this topic, however this case seems to be different.
In PHP version greater than or equal to 7.2 the following code:
if (!empty($_GET['rxdebug']) || AH_DEBUG){
define(AH_DEBUG_MODE, true);
}else{
define(AH_DEBUG_MODE, false);
}
Will throw an error on second define line define(AH_DEBUG_MODE, false);
Use of undefined constant AH_DEBUG_MODE- assumed 'AH_DEBUG_MODE' (this will throw an Error in a future version of PHP) in some-file.php on line xxx
Basically the first define is accepted, the second one no....Isn't the code processed one time only? Or does a sort of pre-processor run beforehand throwing the error as if the constant is defined twice?
Should be:
define('AH_DEBUG_MODE', true);
Having: define(AH_DEBUG_MODE, true)
you force PHP to evaluate the value of a constant AH_DEBUG_MODE
which is obviously not defined yet.
Your code can be simplified to:
define('AH_DEBUG_MODE', !empty($_GET['rxdebug']) || AH_DEBUG);
Your code should be wrapping the constant's name in quotes. Check the manual at http://php.net/manual/en/function.define.php
if (!empty($_GET['rxdebug']) || AH_DEBUG){
define('AH_DEBUG_MODE', true);
}else{
define('AH_DEBUG_MODE', false);
}