Wie der Titel sagt, habe ich die maximale Länge für das PHP-Fehlerprotokoll festgelegt, aber es scheint immer noch viel größer als 1024 zu werden. Ich verwende die korrekte php.ini, habe Apache neu gestartet usw. Die Berechtigungen für das PHP-Protokoll sind 666.
Wie es für PHP typisch ist, ist es nicht wirklich offensichtlich aus dem Namen der Konfigurationseinstellung, oder sogar Dokumentation , aber diese Anweisung gilt für die Länge einer einzelnen Protokollnachricht , nicht die Länge der Protokolldatei als Ganzes.
Verwenden Sie logrotate oder ein ähnliches Werkzeug für das, was Sie versuchen zu tun.
Verifiziert Pascals erster Gedanke :
log_errors_max_len ganze Zahl
Legen Sie die maximale Länge von log_errors fest in Bytes. In error_log Informationen über die Quelle wird hinzugefügt. Der Standard ist 1024 und 0 erlaubt es, keine anzuwenden maximale Länge überhaupt. Diese Länge ist auf protokollierte Fehler angewendet, angezeigt Fehler und auch zu $ php_errormsg. Wann eine Ganzzahl wird verwendet, der Wert ist gemessen in Bytes. Kurzschreibweise, wie in dieser FAQ beschrieben, kann auch sein verwendet.
Was das Handbuch nicht angibt, ist, dass log_errors_max_len
auf
Führen Sie zur Veranschaulichung diesen Code mit log_errors_max_len=0
( 0
bedeutet unbegrenzt) und log_errors=1
:
Die an error_log
gesendeten Bytes sind:
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.)% Co_de% ist jetzt:
(Beachten Sie, dass Ihre Fehlermeldung mit " error_log
" vorangestellt und mit " [15-Jul-2015 01:23:45 utc] PHP Notice:
" angehängt ist, was zu einer längeren Zeile als die von in C:\index.php on line 1
führt.)
Dieses Problem tritt nicht nur bei log_errors_max_len
auf, sondern auch bei der Serverausgabe, die an den Client gesendet wird. Führen Sie denselben Code oben mit error_log
, log_errors_max_len=4
, display_errors=1
, html_errors=0
und error_prepend_string="PPPP"
. Die an den Client gesendete Ausgabe lautet:
Führen Sie nun denselben Code mit error_append_string="AAAA"
, log_errors_max_len=4
, display_errors=1
, html_errors=1
und error_prepend_string="PPPP"
aus. ( error_append_string="AAAA"
und error_prepend_string
gelten nur für angezeigte Fehler, nicht für protokollierte Fehler.) Die an den Client gesendete Ausgabe lautet:
Beachten Sie auch, dass die obigen Tests die gleichen Ergebnisse liefern würden, selbst wenn Sie error_append_string
verwenden. Dies zeigt, dass "wiederholte Fehler" als angesehen werden, bevor die Fehlermeldungen abgeschnitten werden.
(Ihre Ergebnisse können sich je nach verwendetem SAPI unterscheiden. Die obigen Tests werden mit php-5.6.7-Win32-VC11-x86 CLI auf win 8.1 durchgeführt.)
Tags und Links php permissions maxlength logfiles