私も同じ問題を抱えていました。バージョン 2.8.x 以降の OpenX は、現在の GeoIP.dat では動作しないように見える geoip モジュールを使用する代わりに、独自の php ベースの GeoIP データベース リーダー (設定の「flatfile」オプションなど) を使用しているようです。
この問題を解決するために、次のことを行いました。
1) plugins/geoTargeting/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 環境でも機能するはずです...
ああ、ところで。もちろん、すべてのリクエストでphpを介してすべてを実行するよりも(openxが行うように)、データベースをメモリにキャッシュするmod_geoipに依存する方がはるかに高速です。