ID:               45592
 User updated by:  andy at boeckler dot org
 Reported By:      andy at boeckler dot org
 Status:           Bogus
 Bug Type:         Output Control
 Operating System: Linux
 PHP Version:      5.2.6
 New Comment:

Why bogus?

This is by no means a consequent error-reporting.


Previous Comments:
------------------------------------------------------------------------

[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] [EMAIL PROTECTED]

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();                                                       
                                                                        
                    
?>

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

[2008-07-22 22:15:59] [EMAIL PROTECTED]

You have a parse error there:

PHP Parse error:  syntax error, unexpected T_STRING, expecting
T_VARIABLE in /home/jani/t.php on line 7

And I don't get any E_STRICT notices with fixed version of this code
either..

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

[2008-07-22 15:25:38] andy at boeckler dot org

Update:
ob_flush() doesn't change anything ...
I accidentally tested it with display_errors=ON

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

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
    http://bugs.php.net/45592

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

Reply via email to