2016-05-12 4 views
0

私はすべてのPHPエラーをユーザーに非表示にしてテーブルに格納したい(開発用ではない)PHPサイトで使用する設定を持っていますデータベースに格納されます。私が試してみましたPHPエラーを表示しないでデータベースに格納する正しい方法

error_reporting(SHOW_E_ALL); // SHOW_E_ALL = 0 for production 
ini_set('display_errors', SHOW_ERRORS); // SHOW_ERRORS = FALSE for production 
ini_set('display_startup_errors', SHOW_ERRORS); // SHOW_ERRORS = FALSE for production 
set_error_handler('myErrorFunction', E_ALL); 

:私は、次の設定を持っていますが、何らかの理由で、私はFALSEに(カスタマイズした)定義された定数の値を変更した場合、私はどちらも、データベースlogingを表示エラーを得ることはありませんさまざまな組み合わせがありますが、ブラウザナビゲータのエラー表示とエラーのデータベースログ、または表示とログがなく、必要な組み合わせはありません。データベースへの表示とエラーログはありません。

+4

あなたのエラーは、データベースに由来したらどう? –

+1

tryとcatchブロックを使用します。 – Phiter

+0

tryとcatchを使用し、エラーを格納するためにデータベースを使用しないで、エラーをファイルに記録します。 – JiteshNK

答えて

0

解決策が見つかりました。表示エラーの性質をアクティブにする必要があり、およびカスタマイズされたエラー・ハンドラ関数がエラーを表示し、適切に処理してはいけない、私はエラープリントを隠さない忘れていた:

define("DEBUG", FALSE); // set TRUE for debugging purposes 
error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 
set_error_handler('myErrorFunction', E_ALL); 

function myErrorFunction($errno, $errstr, $errfile, $errline){ 
    if (!(error_reporting() & $errno)) { 
     return; 
    } 
    $conn = MySQLiConnection::getConnection(); 

     // insert into database 
     .... 
     .... 
    if(DEBUG){ // if true, it displays the error 
    echo "<font color='red'>PHP error in line $errline of file $errfile: " . $errno . " " . str_replace('\\', '/', addslashes($errstr)). '</font>'; 
    }else{ 
     // nothing 
    } 
    return true; 
} // function 
関連する問題