Edit report at http://bugs.php.net/bug.php?id=45592&edit=1
ID: 45592 Comment by: quamis 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 New Comment: 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. Previous Comments: ------------------------------------------------------------------------ [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] j...@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(); ?> ------------------------------------------------------------------------ [2008-07-22 22:15:59] j...@php.net 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.. ------------------------------------------------------------------------ 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/bug.php?id=45592 -- Edit this bug report at http://bugs.php.net/bug.php?id=45592&edit=1