2011-08-09 12 views
1

さまざまなシナリオでさまざまな応答を返すことができますが、サーバーログを取得する方法はありますか具体的には 500の原因は何ですか?それともPHPページ/出力にそれを表示するか?Apache/PHPログに500が返される理由を具体的に示す方法はありますか?

編集:私はのMediaTempleのグリッドサービスによ

、表示エラーは、phpinfo()中にある私のPHPコードでは、次のとおりです。ini_set('display_errors',1);error_reporting(E_ALL|E_STRICT);

とエラーログが私のホスティングにオンになっています設定していますが、ログtailが表示されたときに、リフレッシュすると何も表示されません。何か案は?

+0

あなたが500を自分で作成している場合は、PHP自身のエラーログに理由を保存するためのerror_log()を使用します。 Apache自体は、PHPの内部状態については一般に何も知らないでしょう。 PHPがクラッシュし、Apacheが500を記録すると、クラッシュの原因についていくつかの詳細がわかります。 –

答えて

1

500エラーの原因は、すでにApacheのエラーログに記録されているはずです。 PHPが責任を負う場合、php.iniにdisplay_errors = Onがある場合、エラーが画面に表示されます。

+0

私はエラーログをPHPとホスティング設定で有効にしていますが、ログを生成するたびに何もログに書き込まれません。これは、通常の「内部サーバーエラー」以外のエラーメッセージはページに出力されません。私が持っているログにそれが表示されず、(プロバイダのために)Apacheのコアログにアクセスできず、それを画面に表示できない場合は、エラー? – barfoon

+0

あなたが探しているPHPエラーログには、通常、エラー出力が書き込まれますか? 'error_log( 'これをエラーログに入れます')'を使用して意図的に書き込めますか?そうでない場合は、PHPエラーログがまったく使用されていないという問題があります。それを修正して、あなたの500のエラーを生成するエラーも同様に表示されるはずです。 – octern

0

あなたが試すことができます。

$log_file = 'c:temp\test_error.txt'; 
register_shutdown_function('handleShutdown'); 

function handleShutdown() { 
    global $log_file; 
    $error = error_get_last(); 
    if ($error !== NULL) { 
     $info = "[SHUTDOWN] file:" . $error['file'] . " | ln:" . $error['line'] . " | msg:" . $error['message'] . PHP_EOL; 
     file_put_contents($log_file, $info, FILE_APPEND); 
    } else { 
     file_put_contents($log_file, "SHUTDOWN ", FILE_APPEND); 
    } 
} 
関連する問題