error_log()不带log_errors_max_len值

时间:2016-06-05 07:25:58

标签: php logging

使用log_errors_max_len进行日志记录时,在Apache中运行的PHP 5.5 Web应用程序的值不会为error_log()。 如果消息长度太大,无论log_errors_max_len的值设置为(0,1024,10000,...),输出总是以相同的长度进行修剪。

我运行了以下脚本(通过浏览器),/var/log/apache2/error.log中的输出总是8107个字符串。 log_errors_max_len显示的值始终是使用ini_set('log_errors_max_len', XXXX);设置的正确值。

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors',1);
ini_set('log_errors',1);
ini_set('log_errors_max_len',2000);

$msg = '';
$msg2 = '';
for ($i = 0; $i < 1000; $i++) {
    $msg2 = $i.'_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
    $msg = $msg.substr($msg2, 0, 100);
}
error_log(print_r($msg, true), 0);
error_log(ini_get('log_errors_max_len'), 0);
?>

另一方面,在CLI中运行并记录到stderr的相同脚本始终显示整个未修剪的字符串,无论log_erros_max_len的值多小。

在此参考PHP Error Log Ignores log_errors_max_len Setting之后,我在PHP中看到状态为&#34的BUG报告;不是错误&#34;没有更多相关信息。

Ubuntu 14.04

Apache 2.4.7

PHP 5.5.9

1 个答案:

答案 0 :(得分:0)

我使用 Nginx 而不是 Apache 以及相同的Ubuntu和PHP版本时遇到同样的问题。挖掘PHP documentation我发现log_errors_max_len设置不会影响error_log()功能,而且显然无关紧要。