2012-03-15 7 views
2

私の開発マシンでは、すべてのエラーを表示するようにPHPを設定しています(display_errorsonに設定されています)。残念ながら、PHPは致命的なエラーをtext/htmlとして送信します。これは、HTMLで空白が無視されるため、コールスタックを読みにくくします。致命的なエラーをプレーンテキストとして表示するにはどうすればよいですか?

PHPに致命的なエラーのためにtext/plainというページを送信させる方法はありますか?

+3

'html_errors'がオンになっていますか? 'php --ini | fgrep html_error' –

+0

@MikePurcell私は今プレーしています:プレーンテキストのエラーメッセージを受け取る方法について尋ねましたが、それは実際に私がうまくやりたいことの精神を実際に達成します。ありがとう! –

+0

全体的な推測でしたが、それは "あなたがコールスタックを少し苦労して読めるようにする"ということでした。すべての正直なところで私はXDebugを使用しています。これはスタックトレースを読みやすくします。受諾の解決策として投稿すればいいですか? –

答えて

0

PHP.netのset_error_handler()にあるfew people in the commentsのエントリは、致命的なエラーをキャプチャするためにregister_shutdown_function()を使用することを推奨します。確かに、それは働いた。

私は次のように、ファイル、error.phpを作成:

php_value auto_prepend_file /path/to/error.php 

出来上がり、プレーンテキストとしてレンダリング致命的なエラー:

register_shutdown_function('plain_text_error'); 

function plain_text_error() { 
    if ($e = error_get_last()) { 
    header('Content-Type: text/plain'); 
    } 
} 

はその後、私のdevのサイトの.htaccessファイルに次を追加しました。

0

残念ながら、PHPでは致命的なエラーを傍受することはできません。 Mike Purcell氏によると、PHP設定でhtml_errorsをオフにすると、フォーマットせずにプレーンエラーメッセージが返される可能性があります。

+0

'html_errors'をオフにしても、ページのMIMEタイプが' text/plain'に返されるようには設定されていません。 –

関連する問題