Réponses:
Utilisez le code suivant:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Regardez ensuite le fichier:
tail -f /tmp/php-error.log
Ou mettez php.ini
à jour comme décrit dans cette entrée de blog de 2008.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log
. Voir perishablepress.com/…
tmp/php-error.log
de quel emplacement vous souhaitez?
Voir
error_log
- Envoyer 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 se produit. Pour plus d'informations, veuillez vous référer au chapitre Gestion des erreurs dans le manuel PHP
Mettez simplement ces codes en haut de votre fichier PHP / index:
error_reporting(E_ALL); // Error/Exception engine, always use E_ALL
ini_set('ignore_repeated_errors', TRUE); // always use TRUE
ini_set('display_errors', FALSE); // Error/Exception display, use FALSE only in production environment or real server. Use TRUE in development environment
ini_set('log_errors', TRUE); // Error/Exception file logging engine.
ini_set('error_log', 'your/path/to/errors.log'); // Logging file path
display_errors
ne doit JAMAIS être activé sur un serveur de production en direct - cette directive est spécifiquement destinée à la sortie vers l'utilisateur et n'a aucun effet sur la journalisation. php.net/manual/en/…
ajoutez ce code dans .htaccess (comme alternative à la fonction php.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>
* comme commenté: c'est pour les serveurs de type Apache , et non pour Nginx ou autres.
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 oeil à l' log_errors
option de configuration dans php.ini. Il semble faire exactement ce que vous voulez. Je pense que vous pouvez également utiliser l' error_log
option pour définir votre propre fichier de journalisation.
Lorsque la log_errors
directive est définie sur On
, toutes les erreurs signalées par PHP sont enregistrées dans le journal du serveur ou dans le fichier spécifié avec error_log
. Vous pouvez également définir ces options avec ini_set
, si vous en avez besoin.
(Veuillez noter que display_errors
devrait être désactivé dans php.ini si cette option est activée)
display_errors
être désactivé si vous activez log_errors
? Ça n'a pas de sens à mon avis. :)
ini_set
ne fonctionne que si ce code est exécuté. Inutile pour le code comportant des erreurs d'analyse car l'erreur se produira avant l'exécution du code. Au lieu de cela, écrivez ces changements dans le php.ini.