1
私はPHPレストサービスに取り組んでいます。多くのエラーが原因でPHPが終了することはありません。 try catch句で私の関数を囲んでいないと、スクリプトはcatchブロックに入ることなく終了します。私のPHPスクリプトのすべての/すべてのエラーをキャッチする方法はありますか?RESTサービスからのエラーを捕捉するには?
私はPHPレストサービスに取り組んでいます。多くのエラーが原因でPHPが終了することはありません。 try catch句で私の関数を囲んでいないと、スクリプトはcatchブロックに入ることなく終了します。私のPHPスクリプトのすべての/すべてのエラーをキャッチする方法はありますか?RESTサービスからのエラーを捕捉するには?
error_log
を確認してください。ほとんどの場合Exception
の前にスローされているPHP FATAL
エラーです。したがって、catch
ステートメントの前には死んでいます。
error_get_last()
と一緒にアプリケーションにregister a shutdown functionをすべて記録するには、次のように入力します。たとえば、アプリケーションが予期せず死に至るすべてのエラーをログに記録します。
function shutdown()
{
$arrError = error_get_last();
if(is_null($arrError)) {
return true;
}
//Remove the if statement and just have the error_log() if you want to log everything
if(in_array($arrError['type'], array(E_RECOVERABLE_ERROR, E_ERROR, E_USER_ERROR))) { //FATAL HANDLER!
error_log("Error caught. ". $arrError['message'] ." in file ". $arrError['file'] .":". $arrError['line']);
//Then maybe do something to make this verbose in your development environment
if(ENVIRONMENT == "dev") {
echo "<h3>ERROR</h3> ". $arrError['message'] ." in file ". $arrError['file'] .":". $arrError['line'];
die;
}
}
}
register_shutdown_function('shutdown');
エラーログを確認して、エラーである可能性が高い、おそらく「致命的」であることを確認してください。 ['register_shutdown_function()'](http://php.net/manual/ja/)を使用するだけでなく、これらを記録する[カスタムエラーハンドラを設定する](http://php.net/set_error_handler)もできますfunction.register-shutdown-function.php) –
どのバージョンのPHPを使用していますか? –