As pointed out in many other questions, turning display_errors to Off in php.ini causes the web server to respond with a status code of 500 Internal server error instead of 200 OK when a fatal error occurs. I installed a simple test with the undefined function to explain the behavior:
php.ini
display_errors = On
index.php
<?php test();
gives:
Fatal error: Call to undefined function test() in D:\xampp\htdocs\index.php on line 1
or just a blank page if I disable the function call as follows:
<?php @test();
In both cases, the response headers are as follows:
HTTP/1.1 200 OK Date: Tue, 10 Jul 2012 20:08:22 GMT Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By: PHP/5.3.8 Content-Length: 0 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html
When changing php.ini to:
display_errors = Off
Causes:
HTTP/1.0 500 Internal Server Error Date: Tue, 10 Jul 2012 20:10:35 GMT Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By: PHP/5.3.8 Content-Length: 0 Connection: close Content-Type: text/html
Can someone explain to me the lining mechanism that makes the web server respond with 500 when display_errors is off?
source share