使用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
答案 0 :(得分:0)
我使用 Nginx 而不是 Apache 以及相同的Ubuntu和PHP版本时遇到同样的问题。挖掘PHP documentation我发现log_errors_max_len
设置不会影响error_log()
功能,而且显然无关紧要。