Maison  >  Article  >  développement back-end  >  Comment configurer le journal des erreurs en php

Comment configurer le journal des erreurs en php

青灯夜游
青灯夜游original
2021-07-20 19:12:482517parcourir

Méthode de configuration : ouvrez le fichier php.ini et définissez "error_reporting=E_ALL", "display_errors=Off", "log_errors=On", "error_log = E:/php_log/php_error.log", etc.

Comment configurer le journal des erreurs en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Pour les développeurs PHP, une fois qu'un projet est mis en service, l'option display_errors dans le fichier de configuration php.ini doit être modifié immédiatement Fermer pour éviter d'être attaqué par des pirates informatiques en raison des chemins, des connexions aux bases de données, des tableaux de données et d'autres informations révélées par ces erreurs. Mais après la mise en service d'un projet, des erreurs se produiront inévitablement, alors comment enregistrer des rapports d'erreurs utiles aux développeurs ?

Nous pouvons enregistrer les rapports d'erreurs sous forme de journaux dans des fichiers texte séparés. L'enregistrement des journaux d'erreurs peut aider les développeurs ou les gestionnaires à vérifier s'il existe des problèmes avec le système. Si vous devez écrire des rapports d'erreurs dans le programme dans le journal des erreurs, activez simplement l'élément de configuration log_errors dans le fichier de configuration PHP.

Les rapports d'erreurs seront enregistrés par défaut dans le fichier journal du serveur Web, par exemple dans le fichier journal des erreurs error.log du serveur Apache. Bien entendu, le journal des erreurs peut également être enregistré dans un fichier spécifié.

Utilisez le fichier spécifié pour enregistrer le journal du rapport d'erreurs

Si vous souhaitez utiliser votre propre fichier spécifié pour enregistrer le journal des erreurs, assurez-vous que ce fichier est stocké en dehors du répertoire racine du document afin de réduire le possibilité d'être attaqué. Et le fichier doit donner au script PHP l'autorisation d'écriture. Supposons que dans le système d'exploitation Linux, le fichier error.log dans le répertoire /usr/local/ est utilisé comme fichier journal des erreurs et que l'utilisateur du processus du serveur Web est configuré pour disposer d'autorisations d'écriture. Ensuite, dans le fichier de configuration PHP, définissez la valeur de la directive error_log sur le chemin absolu du fichier journal des erreurs.

Vous devez modifier les instructions de configuration dans php.ini comme suit :

error_reporting  =  E_ALL                             // 将会向PHP报告发生的每个错误  
display_errors = Off                                     // 不显示满足上条 指令所定义规则的所有错误报告  
log_errors = On                                           // 决定日志语句记录的位置  
log_errors_max_len = 1024                         // 设置每个日志项的最大长度  
error_log = E:/php_log/php_error.log         // 指定产生的错误报告写入的日志文件位置

Une fois le fichier de configuration PHP défini comme ci-dessus, redémarrez le serveur Web. De cette façon, lors de l'exécution d'un fichier de script PHP, tous les rapports d'erreurs générés ne seront pas affichés dans le navigateur, mais seront enregistrés dans le journal des erreurs E:/php_log/php_error.log spécifié par vous.

De plus, non seulement vous pouvez enregistrer toutes les erreurs qui répondent aux règles définies par error_reporting, mais vous pouvez également utiliser la fonction error_log() en PHP pour envoyer des informations d'erreur au journal des erreurs du serveur Web ou à un fichier. Le prototype de la fonction

error_log() est le suivant :

error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool

La description du paramètre est la suivante :

  • $message : le message d'erreur qui doit être enregistré
  • $message_type : définir l'emplacement de l'erreur ; devrait être envoyé. Les types de messages possibles sont les suivants :
    • 0 : (valeur par défaut) Envoie $message au journal système de PHP, en utilisant le mécanisme de journalisation du système d'exploitation ou un fichier, en fonction de ce que error_log est défini dans le fichier de configuration ;
    • 1 : Envoie $ ; message à l'adresse email définie par le paramètre $destination. Le quatrième paramètre $extra_headers ne sera utilisé que dans ce type ;
    • 2 : (obsolète) n'est plus une option ;
    • 3 : $message est envoyé au fichier à $destination ; Le caractère $message ne sera pas traité comme une nouvelle ligne par défaut ;
    • 4 : Envoyez $message directement au gestionnaire de journaux SAPI.
  • $destination : Destination, qui est la destination à laquelle le message d'erreur est envoyé. Sa signification est décrite ci-dessus et est déterminée par le paramètre $message_type ;
  • $extra_headers : en-têtes supplémentaires. Utilisé lorsque $message_type est défini sur 1. Ce type de message utilise la même fonction intégrée de mail().

【Exemple】Prenez la connexion à la base de données Mysql comme exemple et enregistrez un message d'erreur lorsque la connexion échoue.

<?php
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
    if (!$link) {
        error_log(&#39;Mysql 数据库连接失败!&#39;,0);
        exit();
    }
?>

L'exécution du code ci-dessus générera le fichier journal des erreurs correspondant dans le répertoire défini par l'élément error_log dans le fichier de configuration php.ini. Le contenu du fichier est le suivant :

[08-May-2020 13:17:31 PRC] PHP Warning:  mysqli_connect(): (HY000/1045): Access denied for user &#39;my_user&#39;@&#39;localhost&#39; (using password: YES) in D:\WWW\index.php on line 2
[08-May-2020 13:17:31 PRC] Mysql 数据库连接失败!

Apprentissage recommandé : "Tutoriel vidéo PHP".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn