define('LINE_BREAK', PHP_SAPI === 'cli' ? "\n" : '<br>'); # command-line usage if (PHP_SAPI === 'cli') { if (@(!$_SERVER['argv'][1])) { $sUsage = "\n " . basename($_SERVER['argv'][0], '.php') . "\n\n\tusage: " . basename($_SERVER['argv'][0], '.php') . " <filename>\n\n"; die($sUsage); } $sFile = $_SERVER['argv'][1]; } else { $sFile = 'access.log'; } if (!file_exists($sFile)) { die(LINE_BREAK . $sFile . ' does not exist in this directory!' . LINE_BREAK . LINE_BREAK); } else { $oLP = new LogParser($sFile); echo $oLP->generateReport(); } ################################################################################## class LogParser { /** * Apache log file parser. * * Coded for PHP 5.4+ * Tested on Debian, CentOS, and Windows (XAMPP) Apache log files. * * Example usage: * * php -f logparser.php /var/log/apache2/access.log * php -f logparser.php /var/log/httpd/access_log * php -f logparser.php C:\XAMPP\apache\logs\access.log