web-dev-qa-db-fra.com

Comment enregistrer les erreurs et les avertissements dans un fichier?

Comment activer toutes les erreurs et tous les avertissements et les enregistrer dans un fichier mais configurer tout cela dans le script (sans rien changer dans le fichier php.ini). Je veux définir un nom de fichier et que toutes les erreurs et tous les avertissements soient consignés.

218
Gorep

Utilisez le code suivant:

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

Puis regardez le fichier:

tail -f /tmp/php-error.log

Ou mettez à jour php.ini comme décrit dans cette entrée de blog à partir de 2008.

339
Aman

Voir

  • error_log - Envoie un message d'erreur quelque part

Exemple

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

Vous pouvez personnaliser la gestion des erreurs avec vos propres gestionnaires d’erreurs pour appeler cette fonction pour vous chaque fois qu’une erreur ou un avertissement ou tout ce dont vous avez besoin pour vous connecter. Pour plus d'informations, reportez-vous au Chapitre Traitement des erreurs dans le manuel PHP

89
Gordon

Mettez simplement ces codes en haut de votre fichier PHP/index:

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
31
Yousha Aleayoub

ajoutez ce code dans . htaccess (au lieu de php.ini/ini_set fonction):

<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>

* tel que commenté: ceci concerne les serveurs de type Apache.

19
T.Todua

C'est ma courte fonction personnelle

# 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

Jetez un coup d'œil à l'option de configuration log_errors dans le fichier php.ini. Il semble faire juste ce que vous voulez. Je pense que vous pouvez utiliser l’option error_log pour définir également votre propre fichier de consignation.

Lorsque la directive _log_errors_ est définie sur On, toute erreur signalée par PHP sera consignée dans le journal du serveur ou dans le fichier spécifié avec _error_log_. Vous pouvez définir ces options avec ini_set aussi, si vous en avez besoin.

(Veuillez noter que _display_errors_ devrait être désactivé dans php.ini si cette option est activée)

6
Frxstrem

De plus, vous avez besoin de la directive "AllowOverride Options" pour que cela fonctionne. (Apache 2.2.15)

0
Stéphane