如何将错误和警告记录到文件中?

如何打开所有的错误和警告,并将它们记录到一个文件,但在脚本中设置所有的(不改变任何php.ini)。 我想定义一个文件名,并且所有的错误和警告都会被记录下来。

使用下面的代码:

ini_set("log_errors", 1); ini_set("error_log", "/tmp/php-error.log"); error_log( "Hello, errors!" ); 

然后看文件:

 tail -f /tmp/php-error.log 

或从2008年的这个博客条目中描述更新php.ini

看到

  • error_log – 在某处发送错误消息

 error_log("You messed up!", 3, "/var/tmp/my-errors.log"); 

您可以使用您自己的错误处理程序自定义错误处理,以便在出现错误或警告或需要记录的任何时候为您调用此函数。 有关更多信息,请参阅PHP手册中的章节错误处理

.htaccess中添加此代码(如果您没有访问php.ini

 <IfModule mod_php5.c> php_flag log_errors on php_value error_log ./path_to_MY_PHP_ERRORS.log </IfModule> 

ps这是Apache类型的服务器。

看看php.ini中的log_errors配置选项。 这似乎只是你想要的。 我想你可以使用error_log选项来设置自己的日志文件。

log_errors指令设置为On ,PHP报告的任何错误都将记录到服务器日志或由error_log指定的文件中。 如果需要,也可以使用ini_set设置这些选项。

(请注意,如果启用此选项,则应在php.ini中禁用display_errors

这是我个人的短小功能

 # 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("[Ymd H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file); } 

另外,你需要使用“AllowOverride Options”指令才能工作。 (Apache 2.2.15)

只需将这些代码放在PHP /索引文件的顶部即可:

 error_reporting(E_ALL); // Error engine ini_set('display_errors', TRUE); // Error display ini_set('log_errors', TRUE); // Error logging ini_set('error_log', 'your/path/to/errors.log'); // Logging file ini_set('log_errors_max_len', 1024); // Logging file size