Webalizer stats are missing since cron_daily.php script does not look for .gz compressed files
After noticing that webalizer stats for various subdomains were not complete (whole day ranges were missing), I noticed that the cron script does not pick up log files from "yesterday" since they had been already been gzip compressed.
Fix is easy ... check for uncompressed AND compressed logfiles in cron_daily.php using this updated code:
sql = "SELECT domain_id, domain, document_root FROM web_domain WHERE server_id = ".
conf["server_id"];
$records = $app->db->queryAllRecords($sql);
foreach($records as $rec) {
$yesterday = date("Ymd",time() - 86400);
logfile = escapeshellcmd(
rec["document_root"].'/log/'.$yesterday.'-access.log');
if(!@is_file($logfile)) {
logfile = escapeshellcmd(
rec["document_root"].'/log/'.$yesterday.'-access.log.gz');
if(!@is_file($logfile)) {
continue;
}
}
domain = escapeshellcmd(
rec["domain"]);
statsdir = escapeshellcmd(
rec["document_root"].'/web/stats');
$webalizer = '/usr/bin/webalizer';
$webalizer_conf = '/etc/webalizer/webalizer.conf';
if(!@is_dir(statsdir)) mkdir(
statsdir);
commandline = "
webalizer -c $webalizer_conf -n $domain -s $domain -r $domain -q -T -o $statsdir $logfile";
exec($commandline);
}