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