如何将错误和警告记录到文件中?
如何打开所有的错误和警告,并将它们记录到一个文件,但在脚本中设置所有的(不改变任何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