2017-01-11 7 views
1

私はPHPレストサービスに取り組んでいます。多くのエラーが原因でPHPが終了することはありません。 try catch句で私の関数を囲んでいないと、スクリプトはcatchブロックに入ることなく終了します。私のPHPスクリプトのすべての/すべてのエラーをキャッチする方法はありますか?RESTサービスからのエラーを捕捉するには?

+3

エラーログを確認して、エラーである可能性が高い、おそらく「致命的」であることを確認してください。 ['register_shutdown_function()'](http://php.net/manual/ja/)を使用するだけでなく、これらを記録する[カスタムエラーハンドラを設定する](http://php.net/set_error_handler)もできますfunction.register-shutdown-function.php) –

+0

どのバージョンのPHPを使用していますか? –

答えて

1

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'); 
関連する問題