log_errors_max_len = 1024 in php.ini, php log wächst
-
21-09-2019 - |
Frage
Wie der Titel schon sagt, habe ich die maximale Länge für die php-error-log, aber es scheint weiter zu wachsen, viel viel größer als 1024.Ich bin mit der richtigen php.ini, ich habe apache neu gestartet, etc.Die Berechtigungen auf den php-log 666.
Lösung
Wie für PHP typisch ist, ist es nicht wirklich offensichtlich aus dem Namen der Konfigurationseinstellung oder auch die
Andere Tipps
Verifiziert Pascal ' s Erster Gedanke:
log_errors_max_len integer
Die maximale Länge der log_errors in bytes.Im error_log Informationen über die Quelle Hinzugefügt.Die Standard - 1024 und 0 erlaubt das nicht maximale Länge an alle. Diese Länge ist angewendet protokolliert Fehler, angezeigt Fehler und auch $php_errormsg. Wenn eine ganze Zahl, wird der Wert gemessen in bytes.Kurznotation, wie beschrieben in dieser FAQ, ist vielleicht auch verwendet.
Was das Handbuch nicht Staat ist, dass log_errors_max_len
Bezug nimmt nur , um die " Körper“der Fehlermeldung. Dies bedeutet, dass eine einzige Zeile Fehler wird noch größer sein ist als die Länge, die Sie hier einstellen.
Um zu demonstrieren, führen Sie diesen Code mit log_errors_max_len=0
(0
Mittel unbegrenzt) und log_errors=1
:
<?php
// Set your server to these settings:
// error_reporting=-1
// date.timezone=utc ;to suppress the error message "It is not safe to rely on the system's timezone settings."...
echo$msg1; echo$msg2;
Die Bytes gesendet error_log
werden:
[15-Jul-2015 01:23:45 utc] PHP Notice: Undefined variable: msg1 in C:\index.php on line 5
[15-Jul-2015 01:23:45 utc] PHP Notice: Undefined variable: msg2 in C:\index.php on line 5
Als nächstes testen Sie den gleichen Code mit log_errors_max_len=4
und log_errors=1
. (Denken Sie daran, den Server neu zu starten.) error_log
wird nun sein:
[15-Jul-2015 01:23:45 utc] PHP Notice: Unde in C:\index.php on line 5
[15-Jul-2015 01:23:45 utc] PHP Notice: Unde in C:\index.php on line 5
(Beachten Sie, dass Ihre Fehlermeldung mit „[15-Jul-2015 01:23:45 utc] PHP Notice:
“ vorangestellt wird und die beigefügten mit „in C:\index.php on line 1
“, was zu einer Linie, die länger als das, was durch log_errors_max_len
eingestellt ist.)
Dieses Problem tritt nicht nur mit error_log
, sondern auch mit der Server-Ausgabe an den Client gesendet. Um zu demonstrieren, führen Sie den gleichen Code oben mit log_errors_max_len=4
, display_errors=1
, html_errors=0
, error_prepend_string="PPPP"
und error_append_string="AAAA"
. Die Ausgabe an den Client gesendet wird:
PPPP
Notice: Unde in C:\index.php on line 5
AAAAPPPP
Notice: Unde in C:\index.php on line 5
AAAA
Jetzt mit dem gleichen Code log_errors_max_len=4
läuft, display_errors=1
, html_errors=1
, error_prepend_string="PPPP"
und error_append_string="AAAA"
. (. error_prepend_string
und error_append_string
gelten nur für angezeigte Fehler, keine Fehler protokolliert) Die Ausgabe an den Client gesendet wird:
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
Beachten Sie auch, dass die oben genannten Tests sogar die gleichen Ergebnisse liefern würde, wenn Sie ignore_repeated_errors=0
. Dies zeigt, dass „wiederholter Fehler“ wird als vor die Fehlermeldungen abgeschnitten werden.
(Ihre Ergebnisse unterscheiden von dem verwendeten SAPI abhängig. Vor Tests werden durchgeführt, mit PHP-5.6.7-Win32-VC11-x86-CLI auf Win 8.1.)