Bug #45592 [Com]: eval'ed Code throws HTTP 500 error when display_errors is off

From: Date: Fri, 25 Nov 2011 07:33:25 +0000
Subject: Bug #45592 [Com]: eval'ed Code throws HTTP 500 error when display_errors is off
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-165487@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=45592&edit=1

 ID:                 45592
 Comment by:         ananda dot pryana at gmail dot com
 Reported by:        andy at boeckler dot org
 Summary:            eval'ed Code throws HTTP 500 error when
                     display_errors is off
 Status:             Bogus
 Type:               Bug
 Package:            Output Control
 Operating System:   Linux
 PHP Version:        5.2.6
 Block user comment: N
 Private report:     N

 New Comment:

Just a note that this bug still exists in PHP version 5.2.17.

I don't think this is bogus. Based on the quoted manual, the bug is that "execution of the
following code continues normally" part does not happen when display_error is OFF, but happens
when display_error is ON.


Previous Comments:
------------------------------------------------------------------------
[2010-08-03 10:48:46] quamis at gmail dot com

I've ran into the same problem on 5.2.9. Because of an error in the eval'd code(and the
subsequent 500-Internal error generated), the headers i was sending from my app would get
misinterpreted by the browser and would display a "File Not Found"...
I tracked this to a combination of "display_errors off" and the eval function.

------------------------------------------------------------------------
[2008-07-23 09:52:47] andy at boeckler dot org

Why bogus?

This is by no means a consequent error-reporting.

------------------------------------------------------------------------
[2008-07-22 23:23:26] andy at boeckler dot org

"Changed error handler to send HTTP 500 instead of blank page on PHP
errors. "

1. I've never seen a blank page in PHP4, when i'm doing @eval !
2. Why does it work with display_errors on?
3. Why does it work, when i'm doing an "echo" BEFORE the @eval?

------------------------------------------------------------------------
[2008-07-22 23:12:52] jani@php.net

That's expected behavior. 

In PHP 5.2.4 NEWS:
"Changed error handler to send HTTP 500 instead of blank page on PHP errors. "

And in the manual page for eval(): http://docs.php.net/eval

"If there is a parse error in the evaluated code, eval() returns FALSE and execution of the
following code continues normally. It is not possible to catch a parse error in eval()  using
set_error_handler()."


------------------------------------------------------------------------
[2008-07-22 22:53:10] andy at boeckler dot org

Sorry .. 
the code example goes in the wrong direction 
I've narrowed the actual issue. It has to do with evaled code.
The @eval-Function is not catched properly.

<?php
error_reporting(E_ALL & ~E_NOTICE);

class Test {
    function func1() { // HTTP 500                                                                  
                                                                
        ini_set('display_errors', 'off');
        @eval('completely wrong');
        echo 'boo'; exit();
    }
    function func2() { //HTTP 200                                                                   
                                                                
        ini_set('display_errors', 'on');
        @eval('completely wrong');
        echo 'boo'; exit();
    }
    function func3() { // HTTP 200  and HTTP 500 with output buffering                              
                                                                
        ini_set('display_errors', 'off');
        echo 'noerror';
        @eval('completely wrong');
        echo 'boo'; exit();
    }
}

Test::func1();
//Test::func2();                                                                                    
                                                                
//Test::func3();                                                                                    
                                                                
?>

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


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=45592


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


Thread (10 messages)

« previous php.bugs (#165487) next »