У меня была такая же проблема. Похоже, что OpenX начиная с версии 2.8.x использует собственный читатель GeoIP-Database на основе php (например, параметр «flatfile» в настройках) вместо использования модуля geoip - который, похоже, не работает с текущим GeoIP.dat
Чтобы решить эту проблему, я сделал следующее:
1) открыть плагины / геотаргетинг / oxMaxMindGeoIP / oxMaxMindGeoIP.delivery.php
2) поиск:
if (isset($GLOBALS['_MAX']['GEO_IP'])) {
$ip = $GLOBALS['_MAX']['GEO_IP'];
OX_Delivery_logMessage('['.$ip.'] : ip from cookie. Plugin_geoTargeting_oxMaxMindGeoIP_oxMaxMindGeoIP_Delivery_getGeoInfo', 7);
} else {
$ip = $_SERVER['REMOTE_ADDR'];
OX_Delivery_logMessage('['.$ip.'] : ip from remote addr. Plugin_geoTargeting_oxMaxMindGeoIP_oxMaxMindGeoIP_Delivery_getGeoInfo', 7);
}
$aGeoConf = (is_array($conf['oxMaxMindGeoIP'])) ? $conf['oxMaxMindGeoIP'] : array();
3) вставить ниже:
$ret = array(
"country_code" => $_SERVER['GEOIP_COUNTRY_CODE']
);
return $ret;
4) сохранить и сделать
Вы можете найти возможные возвращаемые значения в заголовке функции:
* @return array An array(
* 'country_code',
* 'region',
* 'city',
* 'postal_code',
* 'latitude',
* 'longitude',
* 'dma_code',
* 'area_code',
* 'organisation',
* 'isp',
* 'netspeed'
* );
*/
Прочтите свой module-doc (из mod_geoip), как получить геоданные с текущего (или заданного) IP. В моем примере выше я использую lighttpd 1.5 + mod_geoip (неофициальный модуль). Но это исправление также должно работать с apache_note / pecl-geoip / mod_geoip env ...
Да, и кстати. Конечно, гораздо быстрее полагаться на mod_geoip, который кэширует базу данных в памяти, чем делать все это через php при каждом запросе (как это делает openx).