1

Temat: Geolokalizacja nie działa i wywala błędy.

Witam!

Posiadam najnowszę wersję statystyk 4.9.51. Po wejściu w dział Geolokalizacja wyświetla mi się informacja: Brak danych do wyświetlenia! (mimo iż tak naprawde istnieją statystyki). Natomiast po wejściu do działu Geolikalizacja -> Miasta otrzymuję błąd:

Debugowanie (3):
#1 Warning (/var/www/lib/chart.class.php:220)
krsort() expects parameter 1 to be array, null given
#2 Notice (/var/www/lib/chart.class.php:222)
Undefined index: maximum
#3 Warning (/var/www/lib/chart.class.php:222)
Wrong parameter count for max()

Po wejściu do działu Wizyty wyświetlają się następujące błędy:

#1 Notice (/var/www/lib/geolocation.class.php:64)
Undefined index: continent_code
#2 Notice (/var/www/lib/geolocation.class.php:93)
Undefined index: continent_code
#3 Notice (/var/www/lib/geolocation.class.php:93)
Undefined index: 

Posiadam PHP w wersji: 5.2.6-1+lenny9

Załadowane rozszerzenia PHP: apache2handler, bcmath, bz2, calendar, ctype, curl, date, dba, dom, eAccelerator, exif, filter, ftp, gd, geoip, gettext, hash, iconv, ionCube Loader, json, libxml, mbstring, mcrypt, mime_magic, mysql, mysqli, openssl, pcre, PDO, pdo_mysql, posix, Reflection, session, shmop, SimpleXML, soap, sockets, SPL, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, zlib;

Moduły Apache: core, http_core, mod_actions, mod_alias, mod_authn_file, mod_authz_default, mod_authz_groupfile, mod_authz_host, mod_authz_user, mod_auth_basic, mod_autoindex, mod_cband, mod_cgi, mod_deflate, mod_dir, mod_env, mod_include, mod_logio, mod_log_config, mod_mime, mod_negotiation, mod_php5, mod_rewrite, mod_setenvif, mod_so, mod_ssl, mod_status, mod_suexec, prefork;

Proszę o pomoc w tej kwestii. Dodam że robiłem kilka razy pod rząd nową instalację oskryptowania i cały czas występuje ten problem.

Pozdrawiam!

Adam

P.S. Dobra problem z danymi w Geolokalizacji rozwiązany (napisałem szybki patch).
Nadal jednak pozostaje problem  z tymi błędami w dziale Wizyty.

Ostatnio edytowany przez adam (25.02.2011 22:31:21)

2

Odp: Geolokalizacja nie działa i wywala błędy.

Znowu udało mi się przeoczyć post, z powodu problemów z kanałem informacyjnym (właśnie poprawiany)...
Co do problemów z geolokalizacją, na jakim serwerze (hosting) został zainstalowany skrypt?
Być może zainstalowana jest tam stara wersja rozszerzenia i brakuje niektórych informacji w zwracanej tablicy lub dla jakiegoś adresu IP są zwracane nietypowe (prawdopodobnie niepełne) dane.
Jeśli chodzi o ten drugi problem, to czy mógłbym rzucić okiem na tą łatkę? ;-)

Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.

3

Odp: Geolokalizacja nie działa i wywala błędy.

Skrypt jest na własnym serwerze domowym.
Wersje bibliotek: php5-geoip 1.0.3-1 oraz libgeoip1 1.4.4.dfsg-3+lenny1.
Link do łatki: http://seiffert.pl/ftp/add/estats_geopatch.php

Ostatnio edytowany przez adam (07.03.2011 02:30:25)

4

Odp: Geolokalizacja nie działa i wywala błędy.

To jest w sumie alternatywne rozwiązanie, a nie łatka. ;-)
Co do drugiego problemu, to chyba najlepszym wyjściem będzie ignorować dane bez tej kolumny, czyli zmodyfikować lib/geolocation.class.php, podmienić linię (okolice 70.):

		if (!$Data || $Data['continent_code'] == '--')

Na:

		if (!$Data || empty($Data['continent_code']) || $Data['continent_code'] == '--')

Można by też spróbować wyłapać wywołanie generujące ostrzeżenia i zajrzeć do uzyskanych danych, czyli np. dodać wcześniej taki warunek:

if (empty($Data['continent_code']))
{
    var_dump($Data);
}

Co do pierwszego problemu jeszcze, to czy na pewno jest włączone zbieranie danych o lokalizacji (Narzędzia -> Konfiguracja -> Zaawansowane, opcja: Core / CollectFrequency / geolocation)?

Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.