gpt4 book ai didi

apache - 错误日志中同一行上的多个 error_log() 消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:46 24 4
gpt4 key购买 nike

我有这个 PHP 代码:

error_log('my message 1');
....
error_log('my message 2');
...
error_log('my message 3');

这会在 apache error_log 中生成包含所有消息的一行:

[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 1\n'PHP message: my message 2\n'PHP message: my message 3

我的配置:

Apache 2.4
PHP : 5.4
PHP-FPM with proxypassmatch directive.

我的问题:为什么消息在同一行,如何让每条消息占一行?

感谢您的回答。

编辑

每条消息一行应如下所示:

[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 1'
[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 2'
[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 3'

最佳答案

error_log("error message \r\n");

PHP 忽略单引号内的特殊 ASCII 字符(它将其呈现为单独的字符),您需要使用双引号。

另外:您应该打开您的 php.ini 文件,该文件位于/etc/php5/apache2/文件夹中,然后更改 error_log 指令以指向一个文件。

重要的是 Apache 将有足够的权限写入此文件。所以chown www-data:www-data/var/www/somefile.log应该这样做

如果当前未定义,日志将通过系统日志,并且不允许换行。

补充编辑:要穿透输出缓冲,您需要引发异常。

例子:

try{
ob_start();
doSomething($userInput);
ob_end_flush();
}
catch(Exception $e){
error_log($e->getMessage());
}

function doSomething($data = null){
if($data === null){
throw new Exception("Data is required");
}
else{
//do something
}

}

关于apache - 错误日志中同一行上的多个 error_log() 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19959546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com