11
votes

log_errors_max_len = 1024 dans php.ini, mais le journal PHP continue de croître

Comme le titre dit, j'ai défini la longueur maximale pour le journal d'erreur PHP, mais il semble continuer à augmenter beaucoup plus grand que 1024. J'utilise le bon php.ini, j'ai redémarré Apache, etc. Les autorisations sur le journal PHP sont 666.


2 commentaires

Juste hors de curiosité, cette directive configure-t-elle la longueur totale du fichier (qui a peu de sens, car la valeur par défaut est 1024 octets), ou seule la longueur maximale d'une entrée / une ligne d'entrée / une ligne?


Il existe plusieurs paramètres de configuration php.ini qui travaillent ensemble de manière quelque peu intuitive. Sur votre système, quelles sont les valeurs de erreurs de journal php.net/manual/fr/errorfunc.configuration.php#ini.log-errors et Error-journal php.net/manual/fr/errorfunc.configuration.php#ini.error-log ?


3 Réponses :


26
votes

Comme c'est typique pour PHP, il n'est pas vraiment évident du nom du paramètre de configuration, ni même du documentation , mais cette directive s'applique à la longueur d'un message journal unique , pas la longueur du fichier journal comme un tout.

Utilisez le logrotate ou un outil similaire pour ce que vous essayez de faire.


0 commentaires

9
votes

Vérifié La pensée initiale de Pascal :

log_errors_max_len Integer

Définir la longueur maximale de log_errors en octets. Dans Error_Log Information à propos de la source est ajoutée. Le défaut est 1024 et 0 permet de ne pas appliquer aucun longueur maximale du tout. cette longueur est appliqué aux erreurs enregistrées, affichées erreurs et aussi à $ php_errormsg. quand Un entier est utilisé, la valeur est mesuré en octets. Notation abrégée, Comme décrit dans cette FAQ, peut aussi être utilisé.


2 commentaires

Cette documentation est clairement incorrecte. log_errors est un booléen, donc "longueur maximale de log_errors" est un non-sens.


@Adrien File Un bug



8
votes

Qu'est-ce que le manuel n'a pas indiqué est que log_errors_max_len code> fait référence seulement strong> au "corps" du message d'erreur. Cela signifie qu'une seule ligne d'erreur sera toujours plus grande forte> que la longueur que vous avez définie ici.

Pour démontrer, exécutez ce code à l'aide de log_errors_max_len = 0 code> ( 0 code> signifie illimitée) et log_errors = 1 code> : p> xxx pré>

Les octets envoyés à error_log code> sera: p> xxx pré>

Suivant, testez le même code avec log_errors_max_len = 4 code> et log_errors = 1 code>. (N'oubliez pas de redémarrer le serveur.) error_log code> sera maintenant: p> xxx pré>

(Notez que votre message d'erreur est préparé avec " [15 -JUL-2015 01:23:45 UTC] PHP AVIS: CODE> "et ajouté avec" in c: \ index.php sur la ligne 1 code> ", entraînant une ligne plus longue que ce qui est défini par log_errors_max_len code>.) p>

Ce problème se produit non seulement avec error_log code>, mais aussi avec la sortie du serveur envoyé au client. Pour démontrer, exécutez le même code ci-dessus en utilisant log_errors_max_len = 4 code>, display_errors = 1 code > , html_errors = 0 code> , error_prepend_string =" PPPP " code> et error_append_string =" aaaa " code> . La sortie envoyée au client est la suivante: p> xxx pré>

exécutez maintenant le même code à l'aide de log_errors_max_len = 4 code>, display_errors = 1 code> , html_errors = 1 code> strong>, error_prepend_string = "PPPP" code> et error_append_string = "aaaa" code>. ( error_prepend_string code> et error_append_string code> Appliquer uniquement sur les erreurs affichées, non des erreurs enregistrées.) La sortie envoyée au client est la suivante: p>

PPPP<br />
<b>Notice</b>:  Unde in <b>C:\index.php</b> on line <b>5</b><br />
AAAAPPPP<br />
<b>Notice</b>:  Unde in <b>C:\index.php</b> on line <b>5</b><br />
AAAA


0 commentaires