私はすべての致命的なエラーを記録したい、タイムアウトしてもE_ERRORSのものも記録したい。私はset_error_handlerとシャットダウン関数を使用しますが、最後のものではスタックトレースを持つことができません。それを持つ方法はありますか?PHP:生産における致命的なエラーのログスタックトレース
運用環境でのみ発生するバグを解決するために、運用サーバーに致命的なエラーを記録したいと考えています。私は知っている、devのサーバー上でxdebugは十分でなければならないが、そうではありません。 xdebugを最低限有効にしてxdebugを使うこともできますし、スタックトレースをエラーログに追加するためのバージョンを削除することもできますか?
このコードは、1つのエラーが発生した場合、タイムアウトしてもエラー情報を表示します。 「FATAL」、すなわちトレースは、通常のチャネルを介して生成することができない、スクリプトの実行を意味すぐを停止するため
<?php
function shutdown()
{
$a=error_get_last();
if($a!==null) print_r($a);
}
register_shutdown_function('shutdown');
注意'$ fatals'配列がありますが、実際にはカスタムエラーハンドラで正常に処理できます。 – rdlowrey
私は、xdebugのような致命的なエラーをスタックトレースに取り込むだけのPHPモジュールを考えていましたが、より軽いです。私の探求は、生産上の致命的なエラーについてより多くの情報を持って、それらを修正する手助けをする方法です。 –
@CédricGirardああ、私は参照してください。私は、致命的なエラーの大部分は、開発段階で取り除くことができるタイプのものだと思います。残りは異常な状態です(メモリが不足している、リクエストの途中でサーバーがスマートになっているなど)。これらの場合、私は常に、上記の方法がロギングに十分な情報を提供していることに気付きました。私はそれが致命的なエラー(私はそうすべきだと思う)で動作するかどうかを調べるためにテストしていませんが、['debug_print_backtrace'](http://www.php.net/manual/en/function。トレース・インフォメーション – rdlowrey