log_errors_max_len = 1024 in php.ini, aber PHP-Protokoll wächst weiter

8

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.

    
Jeremy Blum 27.12.2009, 17:51
quelle

3 Antworten

21

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.

    
hop 27.12.2009, 18:00
quelle
6

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.

    
Gordon 27.12.2009 18:02
quelle
3

Was das Handbuch nicht angibt, ist, dass log_errors_max_len auf von nur verweist die Fehlermeldung. Dies bedeutet, dass eine einzelne Zeile mit dem Fehler immer noch größer ist als die hier festgelegte Länge.

Führen Sie zur Veranschaulichung diesen Code mit log_errors_max_len=0 ( 0 bedeutet unbegrenzt) und log_errors=1 :

aus %Vor%

Die an error_log gesendeten Bytes sind:

%Vor%

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:

%Vor%

(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:

%Vor%

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:

%Vor%

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.)

    
Pacerier 15.07.2015 02:48
quelle