我下载了最新版本的OpenX 2.8.6,我正在尝试设置地理定位,但它不起作用。我在管理面板中启用了geoTargeting (配置->全局设置->地理定位模块类型-> OpenX mind (平面文件) )。我在OpenX的文档中看到,没有必要在插件设置中放置任何通向数据库的路径,所以我尝试不使用。我设置测试横幅的交付选项仅显示在塞尔维亚。我正在刷新显示横幅的页面,但此横幅从未显示。
我认为问题可能出在旧数据库中,而且我的IP地址没有被识别,所以我从MaxMind下载了最新的一个数据库(MaxMind文件),并将路径放置在插件的设置中,但仍然无法工作。
有人能帮我解决这个问题吗?
发布于 2011-01-27 02:47:13
我也有同样的问题。看来OpenX是因为2.8.x版使用了自己的基于php的geoip数据库阅读器(例如设置下的“平面文件”选项),而不是使用geoip模块--该模块似乎不适用于当前的GeoIP.dat。
为了解决这个问题,我做了以下工作:
开放的plugins/geoTargeting/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php 1)
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'
* );
*/阅读您的模块-doc( mod_geoip)如何从当前(或给定) IP中获取地理数据。在上面的示例中,我使用的是Lightttpd1.5+ mod_geoip (非官方模块)。但是这个补丁也应该适用于apache_note//mod_geoip env.
哦顺便说一句。当然,依赖在内存中缓存db的mod_geoip比在每个请求上都通过php (就像openx所做的那样)更快。
https://stackoverflow.com/questions/3710235
复制相似问题