我如何打开所有错误和警告,并将它们记录到一个文件,但要在脚本中设置所有这些(不改变php.ini中的任何内容)?
我想定义一个文件名,以便将所有错误和警告都记录到其中。
我如何打开所有错误和警告,并将它们记录到一个文件,但要在脚本中设置所有这些(不改变php.ini中的任何内容)?
我想定义一个文件名,以便将所有错误和警告都记录到其中。
当前回答
此外,你需要“AllowOverride Options”指令来实现这个功能。(Apache 2.2.15)
其他回答
这是我个人的简短函数
# logging
/*
[2017-03-20 3:35:43] [INFO] [file.php] Here we are
[2017-03-20 3:35:43] [ERROR] [file.php] Not good
[2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty
mylog ('hallo') -> INFO
mylog ('fail', 'e') -> ERROR
mylog ('next', 'd') -> DEBUG
mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log
*/
function mylog($text, $level='i', $file='logs') {
switch (strtolower($level)) {
case 'e':
case 'error':
$level='ERROR';
break;
case 'i':
case 'info':
$level='INFO';
break;
case 'd':
case 'debug':
$level='DEBUG';
break;
default:
$level='INFO';
}
error_log(date("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file);
}
看看php.ini中的log_errors配置选项。它似乎只做你想做的事。我认为您也可以使用error_log选项来设置您自己的日志文件。
当log_errors指令设置为On时,PHP报告的任何错误都将被记录到服务器日志或error_log指定的文件中。如果需要,你也可以用ini_set来设置这些选项。
(请注意,如果该选项被启用,在php.ini中应该禁用display_errors)
简单地把这些代码放在PHP/index文件的顶部:
error_reporting(E_ALL); // Error/Exception engine, always use E_ALL
ini_set('ignore_repeated_errors', TRUE); // always use TRUE
ini_set('display_errors', FALSE); // Error/Exception display, use FALSE only in production environment or real server. Use TRUE in development environment
ini_set('log_errors', TRUE); // Error/Exception file logging engine.
ini_set('error_log', 'your/path/to/errors.log'); // Logging file path
See
error_log -在某处发送错误消息
例子
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
您可以使用自己的错误处理程序定制错误处理,以便在发生错误或警告或需要记录的任何事情时为您调用此函数。 有关更多信息,请参阅PHP手册中的章节错误处理
此外,你需要“AllowOverride Options”指令来实现这个功能。(Apache 2.2.15)