I found that I still had to have the GeoIP databases in the misc folder even though the server based geoip processing is enabled which means that the server based info is not used.
The issue is, in my opinion, in ServerBased.php in the beginning of the getLocation function:
public function getLocation( $info )
// geoip modules that are built into servers can't use a forced IP. in this case we try
// to fallback to another version.
$myIP = Piwik_IP::getIpFromHeader();
if ($info['ip'] != $myIP
If you are anonymizing the IP address it will never match the one from the header or the one returned from the ServerBased localization.
The header contains the full ip address and the server based localization also returns the full ip address but piwik - internally - has the anoymized ip address which is just rarely the same.
I'd suggest to either leave out that check or apply the same anonymization to the $myIP as to the one send into this function.
see also http://forum.piwik.org/read.php?2,95296 .
Thanks for the report!
We'll check that it works OK with IP anonymization on.
(In ) Fixes #3463, allow serverbased geoip provider to work w/ anonymized IPs & add description about this issue in provider description.