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.
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.
Voir
error_log
- Envoie un message d'erreur quelque partExemple
_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
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
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.
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);
}
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)
De plus, vous avez besoin de la directive "AllowOverride Options" pour que cela fonctionne. (Apache 2.2.15)