php.ini 中的 log_errors_max_len = 1024,但 php 日志不断增长
正如标题所说,我已经设置了 php 错误日志的最大长度,但它似乎一直增长得远远大于 1024。我正在使用正确的 php.ini,我已经重新启动了 apache 等。 php日志是666。
As the title says, I've set the max length for the php error log, but it seems to keep growing much much larger than 1024. I am using the correct php.ini, I've restarted apache, etc. The permissions on the php log are 666.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正如 PHP 的典型情况一样,从配置设置的名称甚至 文档,但该指令适用于单个日志消息的长度,而不是整个日志文件的长度。
使用 logrotate 或类似的工具来完成您想要做的事情。
As is typical for PHP, it is not really obvious from the name of the configuration setting, or even the documentation, but this directive applies to the length of a single log message, not the length of the log file as a whole.
Use logrotate or a similar tool for what you are trying to do.
验证 Pascal 的初步想法:
Verified Pascal's initial thought:
手册没有说明的是
log_errors_max_len
仅指 到错误消息的“正文”。这意味着单行错误仍然会大于您在此处设置的长度。为了进行演示,请使用
log_errors_max_len=0
(0
表示无限制)和log_errors=1
:发送到
error_log
<的字节/a> 将是:接下来,使用
log_errors_max_len=4
和log_errors=1
测试相同的代码。 (请记住重新启动服务器。)error_log
现在将是:(请注意,您的错误消息前面带有“
[15-Jul-2015 01:23:45 utc] PHP 注意:< /code>”并附加“
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"
。发送到客户端的输出为:现在使用
log_errors_max_len=4
、display_errors=1
、html_errors=1
< /strong>、error_prepend_string="PPPP"
和error_append_string="AAAA"
。 (error_prepend_string
和error_append_string
仅适用于显示的错误,而不适用于记录的错误。)发送到客户端的输出为:另请注意,上述测试将返回相同的结果,即使您使用
ignore_repeated_errors=0
。这表明在裁剪错误消息之前会考虑“重复错误”。(您的结果可能会有所不同,具体取决于所使用的 SAPI。以上测试是在 win 8.1 上使用 php-5.6.7-Win32-VC11-x86 CLI 完成的。)
What the manual doesn't state is that
log_errors_max_len
refers only to the "body" of the error message. This means that a single line of error will still be greater than the length you set here.To demonstrate, run this code using
log_errors_max_len=0
(0
means unlimited) andlog_errors=1
:The bytes sent to
error_log
will be:Next, test the same code with
log_errors_max_len=4
andlog_errors=1
. (Remember to restart the server.)error_log
will now be:(Notice that your error message is prepended with "
[15-Jul-2015 01:23:45 utc] PHP Notice:
" and appended with "in C:\index.php on line 1
", resulting in a line longer than what is set bylog_errors_max_len
.)This issue occurs not just with
error_log
, but also with the server output sent to the client. To demonstrate, run the same code above usinglog_errors_max_len=4
,display_errors=1
,html_errors=0
,error_prepend_string="PPPP"
, anderror_append_string="AAAA"
. The output sent to the client is:Now run the same code using
log_errors_max_len=4
,display_errors=1
,html_errors=1
,error_prepend_string="PPPP"
, anderror_append_string="AAAA"
. (error_prepend_string
anderror_append_string
apply only to displayed errors, not logged errors.) The output sent to the client is:Also note that the above tests would return the same results even if you use
ignore_repeated_errors=0
. This shows that "repeated errors" are considered before the error messages are cropped.(Your results may differ depending on the SAPI used. Above tests are done using php-5.6.7-Win32-VC11-x86 CLI on win 8.1.)