php.ini中的log_errors_max_len = 1024,但是php日志不断增长

Jer*_*lum 10 php permissions logfiles maxlength

正如标题所说,我已经设置PHP错误日志中的最大长度,但它也在不断增加多少远大于1024我使用了正确的php.ini,我已经重启apache等上的权限php日志是666.

小智 25

正如PHP的典型情况,从配置设置的名称甚至文档中都不是很明显,但是这个指令适用于单个日志消息的长度,而不是整个日志文件的长度.

使用logrotate或类似工具来完成您要执行的操作.


Gor*_*don 8

验证Pascal最初的想法:

log_errors_max_len 整数

设置log_errors的最大长度(以字节为单位).在error_log中添加了有关源的信息.默认值为1024,0允许不应用任何最大长度.此长度适用于记录的错误,显示的错误以及$ php_errormsg.使用整数时,该值以字节为单位进行测量.也可以使用本FAQ中描述的速记符号.


Pac*_*ier 7

什么手册没有状态是log_errors_max_len对错误信息的"身体".这意味着单行错误仍将大于您在此处设置的长度.

要演示,请使用log_errors_max_len=0(0表示无限制)运行此代码,并且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;
Run Code Online (Sandbox Code Playgroud)

发送到的字节error_log将是:

[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
?
Run Code Online (Sandbox Code Playgroud)

接下来,用log_errors_max_len=4和测试相同的代码log_errors=1.(记得重新启动服务器.)error_log现在将:

[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
?
Run Code Online (Sandbox Code Playgroud)

(请注意,您的错误消息前面带有" [15-Jul-2015 01:23:45 utc] PHP Notice:"并附加" in C:\index.php on line 1",导致行长于设置的行log_errors_max_len.)

此问题不仅发生在error_log,而且还与发送到客户端的服务器输出一起发生.为了演示,运行上述使用相同的代码log_errors_max_len=4,display_errors=1,html_errors=0,error_prepend_string="PPPP",和error_append_string="AAAA".发送给客户端的输出是:

PPPP
Notice: Unde in C:\index.php on line 5
AAAAPPPP
Notice: Unde in C:\index.php on line 5
AAAA
Run Code Online (Sandbox Code Playgroud)

现在运行使用相同的代码log_errors_max_len=4,display_errors=1,html_errors=1,error_prepend_string="PPPP",和error_append_string="AAAA".(error_prepend_stringerror_append_string仅适用于显示的错误,而不是记录的错误.)发送到客户端的输出是:

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
Run Code Online (Sandbox Code Playgroud)

另请注意,即使您使用,上述测试也会返回相同的结果ignore_repeated_errors=0.这表明在裁剪错误消息之前会考虑"重复错误" .

(您的结果可能因使用的SAPI而异.上面的测试是在win 8.1上使用php-5.6.7-Win32-VC11-x86 CLI完成的.)