web-dev-qa-db-ja.com

エラーや警告をファイルに記録する方法

すべてのエラーと警告をオンにしてファイルに記録する方法(スクリプト内でそれらすべてを設定する方法(php.ini内の何も変更しない))。ファイル名を定義して、すべてのエラーと警告が記録されるようにします。

215
Gorep

次のコードを使用してください。

ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );

それからファイルを見てください。

tail -f /tmp/php-error.log

または2008年から このブログエントリ で説明されているようにphp.iniを更新してください。

337
Aman

見る

  • error_log - どこかにエラーメッセージを送る

error_log("You messed up!", 3, "/var/tmp/my-errors.log");

独自のエラーハンドラを使ってエラー処理をカスタマイズすることができます エラーや警告、あるいはログに記録する必要があるときはいつでもこの関数を呼び出すことができます。追加情報については、PHPマニュアルの 章のエラー処理マニュアルを参照してください

86
Gordon

これらのコードをPHP /インデックスファイルの先頭に置くだけです。

error_reporting(E_ALL); // Error engine - always TRUE!

ini_set('ignore_repeated_errors', TRUE); // always TRUE

ini_set('display_errors', TRUE); // Error display - FALSE only in production environment or real server

ini_set('log_errors', TRUE); // Error logging engine

ini_set('error_log', 'your/path/to/errors.log'); // Logging file path

ini_set('log_errors_max_len', 1024); // Logging file size
30
Yousha Aleayoub

このコードをに追加します。htaccessphp.iniの代わりとして /ini_set関数):

<IfModule mod_php5.c>
php_flag log_errors on 
php_value error_log ./path_to_MY_PHP_ERRORS.log
# php_flag display_errors on 
</IfModule>

*コメント付き:これはApacheタイプのサーバー用です。

19
T.Todua

それは私の個人的な短い機能です

# logging
/*
[2017-03-20 3:35:43] [INFO] [file.php] Here we are
[2017-03-20 3:35:43] [ERROR] [file.php] Not good
[2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty

mylog ('hallo') -> INFO
mylog ('fail', 'e') -> ERROR
mylog ('next', 'd') -> DEBUG
mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log
*/
function mylog($text, $level='i', $file='logs') {
    switch (strtolower($level)) {
        case 'e':
        case 'error':
            $level='ERROR';
            break;
        case 'i':
        case 'info':
            $level='INFO';
            break;
        case 'd':
        case 'debug':
            $level='DEBUG';
            break;
        default:
            $level='INFO';
    }
    error_log(date("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file);
}
6
Juergen

Php.iniの log_errors 設定オプションを見てください。それはあなたがやりたいことだけをするようです。私はあなた自身のロギングファイルも設定するために error_log オプションを使うことができると思います。

log_errorsディレクティブがOnに設定されている場合、PHPによって報告されたエラーはすべてサーバーログまたはerror_logで指定されたファイルに記録されます。必要に応じて、これらのオプションを ini_set でも設定できます。

(このオプションが有効になっている場合、display_errorsはphp.iniで無効にする必要があります)

6
Frxstrem

さらに、これを機能させるには "AllowOverride Options"ディレクティブが必要です。 (Apache 2.2.15)

0
Stéphane