The largest item still open on the gap list was Statistics Software Configuration. The existing Traffic & Visitors page already parses access logs for requests, unique visitors, response codes, and top pages, but real AWStats does something different: browser, OS, search-engine, and referrer breakdowns, built up as month-over-month history. It was worth building as the actual tool rather than another homegrown log parser wearing its name.
Confirmed against the real thing first
Everything about how AWStats works was confirmed on a real install on the development server before any code went in, including whether its historical database survives log rotation. It does, as long as an update runs before a month’s raw log is rotated away.
Reports are generated as static HTML only, with no live script exposed to requests. The update action builds the main report page plus all detail sections as static files, and closes out the previous month’s snapshot the first time it runs after that month ends.
Two bugs, two fixes, neither guessed
A permission gap on first use. The first real click of Update Now failed with a “Read-only file system” error because the new feature’s write location hadn’t been allowed for the web application. It was fixed by adding that one location.
A relative-link trap. The month-picker link pointed at a report URL with no trailing filename, so the report’s relative icon links resolved one directory too high and every icon returned 404. It was fixed by linking the real filename, and confirmed in the browser’s network tab.
Both were caught by watching the real page in a real browser against real generated output.