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

 ID:                 30541
 Comment by:         good821 at 126 dot com
 Reported by:        php at dush dot student dot utwente dot nl
 Summary:            $php_errormsg isn't set when an error occured in a
                     function called by eval()
 Status:             Open
 Type:               Feature/Change Request
 Package:            Feature/Change Request
 Operating System:   linux 2.6
 PHP Version:        5.0.2
 Block user comment: N
 Private report:     N

 New Comment:

http://www.vikingsjerseysstore.com/christian-ponder-jersey-c-14_34.html 
Christian Ponder Jersey
http://www.vikingsjerseysstore.com/chuck-foreman-jersey-c-14_30.html    Chuck 
Foreman Throwback Jersey
http://www.vikingsjerseysstore.com/ej-henderson-jersey-c-14_22.html     E.J. 
Henderson Jersey


Previous Comments:
------------------------------------------------------------------------
[2004-11-07 02:11:33] php at dush dot student dot utwente dot nl

and sorry, forgot to notice, I know of set_error_handler() :-)

------------------------------------------------------------------------
[2004-11-06 22:38:02] php at dush dot student dot utwente dot nl

<?
function bla3() {
        echo $bla3;
        var_dump($php_errormsg);
}
echo $bla2;
var_dump($php_errormsg);
eval('echo $bla1;');
var_dump($php_errormsg);
eval('bla3();');
var_dump($php_errormsg);
?>
outputs:
Notice: Undefined variable: bla2 in /home/dush/public_html/test.php on line 8
string(25) "Undefined variable: bla2" 
Notice: Undefined variable: bla1 in /home/dush/public_html/test.php(10) : 
eval()'d code on line 1
string(25) "Undefined variable: bla1" 
Notice: Undefined variable: bla3 in /home/dush/public_html/test.php on line 5
string(25) "Undefined variable: bla3"
string(25) "Undefined variable: bla1" 

It's certainly not a bug if it's supposed to be a different $php_errormsg for 
every scope, but I thought it was a global variable.
If I'm not correct, please think of adding something like $global_php_errormsg, 
as it would be very handy for debugging purposes without having errors on 
possibly a lot of different positions on a page with error_reporting(E_ALL);

------------------------------------------------------------------------
[2004-11-04 13:43:17] [email protected]

Can't find any errors here:
<?
eval('echo $blah;');
var_dump($php_errormsg);
echo $bla;
var_dump($php_errormsg);
?>
outputs:
---
Notice: Undefined variable: blah in /www/index.php(3) : eval()'d code on line 1
string(24) "Undefined variable: blah" 
Notice: Undefined variable: bla in /www/index.php on line 7
string(23) "Undefined variable: bla"
---
Check your code.

------------------------------------------------------------------------
[2004-10-23 16:49:20] php at dush dot student dot utwente dot nl

Description:
------------
in debug mode, my script stores every error that occured in the script. when an 
error occurs in eval(), the error is stored correctly in $php_errormsg. however 
when the error occured in a function called by eval() the error isn't stored 
anymore.

Reproduce code:
---------------
register_tick_function("store_errors", true);
function &store_errors($do_tick = true) {
        GLOBAL $php_errormsg;
        static $errors = array();
        if ($do_tick) {
                if (isset($php_errormsg) && $php_errormsg != "") {
                        if ($trace = debug_backtrace()) {
                                $func = $trace[1]['function'];
                                if (isset($trace[1]['class']))
                                        $func = 
$trace[1]['class'].$trace[1]['type'].$func;
                        }else {
                                $func = 'unknown';
                        }
                        $errors[] = array(
                                0 => $php_errormsg,
                                1 => $func
                        );
                        $php_errormsg = "";
                }
        }else {
                return $errors;
        }
}
/* stupid test function */
        function blah() { echo $blah2; echo "error is set here: 
$php_errormsg<br>"; }
        eval ('echo $blah1; blah();');
        $ar = store_errors(false);
        while(list($key,$val) = each($ar)) {
                echo "{$key} => {$val[0]} in {$val[1]}<br>\n";
        }

Expected result:
----------------
Notice: Undefined variable: blah1 in 
/home/dush/public_html/core/loader.inc.php(28) : eval()'d code on line 1

Notice: Undefined variable: blah2 in /home/dush/public_html/core/loader.inc.php 
on line 27
error is set here: Undefined variable: blah2
0 => Undefined variable: blah1 in unknown
1 => Undefined variable: blah2 in blah

Actual result:
--------------
Notice: Undefined variable: blah1 in 
/home/dush/public_html/core/loader.inc.php(28) : eval()'d code on line 1

Notice: Undefined variable: blah2 in /home/dush/public_html/core/loader.inc.php 
on line 27
error is set here: Undefined variable: blah2
0 => Undefined variable: blah1 in unknown


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



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

Reply via email to