11

正如标题所说,我已经为 php 错误日志设置了最大长度,但它似乎一直比 1024 大得多。我使用的是正确的 php.ini,我已经重新启动了 apache,等等。 php日志是666。

4

3 回答 3

26

与 PHP 的典型情况一样,从配置设置的名称,甚至文档中都看不出来,但该指令适用于单个日志消息的长度,而不是整个日志文件的长度。

使用 logrotate 或类似的工具来做你想做的事情。

于 2009-12-27T18:00:10.447 回答
10

验证了帕斯卡最初的想法

log_errors_max_len 整数

以字节为单位设置 log_errors 的最大长度。在 error_log 中添加了有关源的信息。默认值为 1024,0 允许根本不应用任何最大长度。此长度适用于记录的错误、显示的错误以及 $php_errormsg。使用整数时,该值以字节为单位。也可以使用本常见问题解答中描述的速记符号。

于 2009-12-27T18:02:16.620 回答
8

手册没有说明的是log_errors_max_len仅指错误消息“正文”。这意味着单行错误仍然会大于您在此处设置的长度。

为了演示,使用log_errors_max_len=00表示无限制)和运行此代码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;

发送到的字节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
‏

接下来,使用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
‏

(请注意,您的错误消息以“”开头并以“ [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

log_errors_max_len=4现在使用, display_errors=1, html_errors=1,error_prepend_string="PPPP"和运行相同的代码error_append_string="AAAA"。(error_prepend_string并且error_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

另请注意,即使您使用ignore_repeated_errors=0. 这表明在裁剪错误消息之前考虑了“重复错误”。

(根据使用的 SAPI,您的结果可能会有所不同。以上测试是在 win 8.1 上使用 php-5.6.7-Win32-VC11-x86 CLI 完成的。)

于 2015-07-15T02:48:10.643 回答