他の多くの質問で指摘されているように、php.ini で display_errors を Off にすると、致命的なエラーが発生したときに Web サーバーがステータス コード 200 OK ではなく 500 内部サーバー エラーで応答します。動作を説明するために、未定義の関数を使用して簡単なテストをセットアップしました。
php.ini
display_errors = On
index.php
<?php test();
与えます:
Fatal error: Call to undefined function test()
in D:\xampp\htdocs\index.php on line 1
または、次のように関数呼び出しを黙らせると、空白のページになります。
<?php @test();
どちらの場合も、回答ヘッダーは次のとおりです。
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
php.ini を次のように変更します。
display_errors = Off
原因:
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
display_errors が Off のときに、Web サーバーが 500 で応答する基盤となるメカニズムを誰か説明してもらえますか?