如何在PHP中写入错误日志文件


76

我想在执行PHP代码时将消息写入错误日志文件。

我正在尝试使用PHPerror_log()函数Docs

但这对我来说无法正常工作。


13
您的意思是“它无法正常工作”
您尝试了

7
告诉我们您尝试什么。告诉使用您所得到的以及您期望发生的事情。
UnholyRanger

请显示您的代码,告诉您预期的结果,然后描述发生的情况。通常情况下,该error_log()函数可以正常工作,而您并未说出什么对您完全不起作用,因此您的问题尚不清楚。
2013年


这可能源于权限问题,其中您为其创建错误日志文件的用户与Apache用于写入该文件的用户不同。检出“ / etc / apache2 / envvars /”文件以获取可能的修复程序。
罗伯特·布里西塔

Answers:


117

如果您不想更改php.ini文件中的任何内容,那么根据PHP文档,可以执行此操作。

error_log("Error message\n", 3, "/mypath/php.log");

第一个参数是要发送到日志的字符串。第二个参数3表示期望文件目标。第三个参数是日志文件路径。


1
我只是在做,error_log("Error message\n")但是什么也没出现/var/log/httpd/error_log。:(任何想法为什么?
trusktr 2013年

3
php.ini文件中检查error_log配置设置。此设置将保存写入错误的文件名。例如error_log "log_file_name"。在更多细节php.net/manual/en/function.error-log.php
suspectus


@suspectus,您的回答就是我一直在寻找足够长的时间。我相信第三个参数可以是我要将错误消息记录到的任何文件。我对么?
CodeForGood

@Pupil,请告诉我数据在error_log()写入的日志文件中保留了多长时间?
CodeForGood

45

您可以简单地使用:

error_log("your message");

默认情况下,该消息将发送到php系统记录器。


10
如果使用此方法,请确保已打开错误日志记录,并且取消注释了error_logphp.ini中的指令。
乔治·康明斯2014年

5
-1表示,在问了问题一年后,OP已经说过他尝试过什么,但对他没有用。同样,嫌疑人已经有了一个更好的答案,该答案在此答案的前一年就创建了。
制造商史蒂夫(Steve)

@ToolmakerSteve,这也是一个很好的选择。
Pacerier,2015年

@Pacerier-这个答案已经是他尝试过的答案。那么,这对讨论有什么帮助呢?
ToolmakerSteve

2
@ToolmakerSteve他实际上并没有说他如何使用它,只是他在尝试使用它。公认的(而且非常好的)答案也使用error_log了……
Ben Visness

17

我们都知道PHP将错误保存在php_errors.log文件中。

但是,该文件包含大量数据。

如果要记录应用程序数据,则需要将其保存到自定义位置。

我们可以在error_log函数中使用两个参数来实现此目的。

http://php.net/manual/zh/function.error-log.php

我们可以使用:

error_log(print_r($v, TRUE), 3, '/var/tmp/errors.log');

哪里,

print_r($v, TRUE) :将$ v(数组/字符串/对象)记录到日志文件中。 3:将日志消息放入第三个参数中指定的自定义日志文件。

'/var/tmp/errors.log':自定义日志文件(此路径适用于Linux,我们可以根据操作系统指定其他路径)。

或者,您可以使用 file_put_contents()

file_put_contents('/var/tmp/e.log', print_r($v, true), FILE_APPEND);

哪里:

'/var/tmp/errors.log':自定义日志文件(此路径用于Linux,我们可以根据操作系统指定其他路径)。 print_r($v, TRUE) :将$ v(数组/字符串/对象)记录到日志文件中。FILE_APPEND:常量参数,指定是否在文件存在时附加到文件,如果文件不存在,则将创建新文件。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.