Nach Update von PHP 5.2.17 auf 5.3.14 zählt Piwik nicht mehr

Ein Hallo an die Piwik Gemeinde

Seit gestern hat mein Webhoster sowohl auf meinem Virtual-Server als auch auf den Webservern div. meiner Kunden ein PHP Update von ehemals Vers. 5.2.17 auf nunmehr Vers. 5.3.14 durchgeführt.

Und ganau seitdem zählt Piwik keinen einzigen Besucher mehr. In den etlichen Dashboards wird überall folgender Hinweis angezeigt:

“Es stehen keine Daten für diesen Bericht zur Verfügung.”

Da Piwik selber den Einsatz von PHP >= 5.3 empfiehlt, stellt sich mir nun die Frage, woran das liegen könnte bzw. was ich wie und wo verändern, machen muss damit Piwik wieder alles richtig zählt und anzeigt.

Ein heutiger Anruf bei dem Support meines Webhosters brachte lediglich die Aussage, dass man dort nichts davon wissen würde und somit auch keine Lösung dafür hat.

Ich danke schon jetzt für sachdienliche Hinweise bzw. Lösungvorschläge.

Das Problem habe ich auch.
Nach einem Blick ins Error-Log habe ich den schuldigen beim GeoIP Plugin ausgemacht.
Ich habe das jetzt erst einmal deaktiviert bis eine richtige Lösung verfügbar ist.
Wenn ich mir mit phpinfo() die Einstellungen anzeigen lasse, taucht darin GeoIP als Apache Modul auf. Ich bin mir nicht sicher, ob das in der alten Konfiguration auch so drin war… vermutlich nicht. Aber ich könnte mir vorstellen, daß es da jetzt klemmt.

Vielleicht gibts ja bald ein Update für das GeoIP Plugin hoff

[quote=Cebalraj]
Das Problem habe ich auch.
Nach einem Blick ins Error-Log habe ich den schuldigen beim GeoIP Plugin ausgemacht.
Ich habe das jetzt erst einmal deaktiviert bis eine richtige Lösung verfügbar ist.
Wenn ich mir mit phpinfo() die Einstellungen anzeigen lasse, taucht darin GeoIP als Apache Modul auf. Ich bin mir nicht sicher, ob das in der alten Konfiguration auch so drin war… vermutlich nicht. Aber ich könnte mir vorstellen, daß es da jetzt klemmt.

Vielleicht gibts ja bald ein Update für das GeoIP Plugin hoff[/quote]

Hallo Cebalraj

Vielen Dank für Deine Info zum GeoIP Plugin. Ja, das habe ich in allen Piwik Installationen installiert. Also werde ich das morgen mal in mind. einer Piwik Installation deinstallieren und dann schauen, ob das die Ursache dafür ist.

Ich danke Dir und werde mich dann diesbezgl. hier wieder melden.

Welche Meldung erscheint denn im Error Log?
Hier läuft GeoIP eigentlich relativ problemlos, wenn man von den maskierten IP’s absieht.

das ist die besagte Fehlermeldung:

PHP Fatal error: Cannot redeclare geoip_country_code_by_name() in /is/htdocs/wpxxx/xxx/piwik/plugins/GeoIP/libs/geoip.inc on line 347

Was ist mit der “Lösung” aus dem englischen Forum?

Bei mir funktioniert es damit so weit…

Hallo Cebalraj - Hallo Thomas Seifert

1) Cebalraj hatte recht damit, dass es am nunmehr an, von meinem Webbhoster Hosteurope GeoIP als installiertes Apache Modul liegt.
Nach telef. Rücksprache hat Hosteuerope das mit der am 5. Sep. 2012 erfolgten Umstellung von ehemals PHP 5.2.17 auf nunmehr 5.3.14 vorgenommen. Das betrifft leider auch alle Piwik Installationen meiner div. Kunden welche ich ebenfalls bei Hosteurope untergebracht habe.

Eine nachvollziehbare Begründung/Erklärung warum man das bei Hosteurope gemacht hat, konnte man mir leider nicht mitteilen.

Ich "vermute" es liegt daran:
-> http://www.phishmail.de/2009/02/apache-mit-geoip-module/
-> http://dev.maxmind.com/geoip/mod_geoip2

2) Thomas, schaue doch mal in deiner phpinfo() nach ob dort GeoIP als Apache Module aufgeführt wird. Wenn nicht, dann hast du auch keinerlei Probleme.

3) Ich habe inzwischen, Dank Cebalraj vorstehender Fehlermeldung in einer meiner Piwik-Installationen eine Modifizierung in der ../piwik/plugins/GeoIP/libs/geoip.inc wie folgt vorgenommen:


To fix this, replace

function geoip_country_code_by_name($gi, $name) {
  $country_id = geoip_country_id_by_name($gi,$name);
  if ($country_id !== false) {
        return $gi->GEOIP_COUNTRY_CODES[$country_id];
  }
  return false;
}
function geoip_country_name_by_name($gi, $name) {
  $country_id = geoip_country_id_by_name($gi,$name);
  if ($country_id !== false) {
        return $gi->GEOIP_COUNTRY_NAMES[$country_id];
  }
  return false;
}

with

if (!function_exists('geoip_country_code_by_name')){
    function geoip_country_code_by_name($gi, $name) {
      $country_id = geoip_country_id_by_name($gi,$name);
      if ($country_id !== false) {
            return $gi->GEOIP_COUNTRY_CODES[$country_id];
      }
      return false;
    }
}
if (!function_exists('geoip_country_name_by_name')){
    function geoip_country_name_by_name($gi, $name) {
      $country_id = geoip_country_id_by_name($gi,$name);
      if ($country_id !== false) {
            return $gi->GEOIP_COUNTRY_NAMES[$country_id];
      }
      return false;
    }
}

Quelle: http://code.google.com/p/slimstat/issues/detail?id=1

Achtung: Aber nicht in der dort angegeben GeoIP.php (darin ist der Code garnicht vorhanden) sondern in der geoip.inc

Und nun werde ich das mal ein paar Stunden beobachten und dann eine Rückmeldung hier hinterlassen.

Vielen Dank für die bisherigen Antworten.

Dann wurde da wohl das pecl geoip modul in PHP eingebunden. Haben wir bei uns nicht drin und wir nutzen auch nicht Apache als Webserver.

Hallo Tentaurus,

siehe meinen letzten Beitrag:

Und in welcher Datei hast du die Codeänderungen vorgenommen?

Hallo Thomas Seifert

Siehe Bildanlage!

McHunter, sorry ich weiß nicht was Du mir damit sagen willst. Es ist als PHP extension eingebunden, ja, eben das von PECL :: Package :: geoip .

Thomas Seifert, ich wollte dir damit nichts sagen, sondern lediglich aufzeigen wie es seit der Umstellung (und seitdem bestehet ja bekanntlich das Problem) in den phpinfo´s angezeigt wird.

[quote=McHunter]
Hallo Tentaurus,
siehe meinen letzten Beitrag:
Und in welcher Datei hast du die Codeänderungen vorgenommen?[/quote]

…in der geoip.inc
(diese “Lösung” wurde ja schon im englischen Forum erwähnt)

Bei mir funktioniert es bis jetzt bestens.

Hallo Tentaurus,

im Thread im engl. Piwik-Forum habe ich inzwischen nichts von “Änderungen in der geoip.inc” gelesen.

Ich bin - schon vor deinem Hinweisbeitrag zum engl. Forum - auf die geoip.inc durch dank Cebalraj´s Hinweis:

gekommen. :wink:

Wenn ich die Änderungen an der Datei so wie oben angegeben vornehme, habe ich anschließend jede Menge solcher ‘notices’ im Error-Log. Optimal finde ich das nicht.

Hier nur ein Auszug, die liste ist wesentlich länger.

PHP Notice: Constant GEOIP_PROXY_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 32
PHP Notice: Constant GEOIP_ASNUM_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 33
PHP Notice: Constant GEOIP_NETSPEED_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 34
PHP Notice: Constant GEOIP_REGION_EDITION_REV0 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 35
PHP Notice: Constant GEOIP_REGION_EDITION_REV1 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 36
PHP Notice: Constant GEOIP_CITY_EDITION_REV0 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 37
PHP Notice: Constant GEOIP_CITY_EDITION_REV1 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 38
PHP Notice: Constant GEOIP_ORG_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 39
PHP Notice: Constant GEOIP_ISP_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 40
PHP Notice: Constant GEOIP_UNKNOWN_SPEED already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 51

Hallo Cebalraj,

Danke für deine Errorlog Mitteilung.

Da ich die vg. Änderungen in der geoip.inc inzwischen seit einigen Stunden in drei meiner eigenen Piwik-Installationen als auch auf zwei Webservern von Kunden von mir durchgeführt habe, scheint alles überall einwandfrei zu laufen. Allerdings werden mir bei allen Piwik-Installationen nun sehr viele “unbekannt” unter Visitors Countries angezeigt.

Nun zu deinen Errorlog-Einträge:

Eine soeben erfolgte Überprüfungen aller Errorlogs hat ergeben, dass lediglich auf einer von drei Piwik-Installation auf meinem eigenen Virtual-Server identische Fehlermeldungen wie bei dir in Massen (weil dort relativ viele Besucher sind) vorhanden sind. Bei allen anderen, auch den zwei Kundeninstallatioinen tauchen keinerlei solcher Fehlermeldungen in den Errorlogs auf.

Sehr merkwürden, denn die Änderungen sind ja überall identisch von mir eingebaut worden!!!

Ich werde mal überprüfen, ob in allen Piwik-Installationen auch identische GeoIP-Scripte laufen. Also indentische GeoIP Versionen.

[quote=Cebalraj]
Wenn ich die Änderungen an der Datei so wie oben angegeben vornehme, habe ich anschließend jede Menge solcher ‘notices’ im Error-Log. Optimal finde ich das nicht.

Hier nur ein Auszug, die liste ist wesentlich länger.

PHP Notice: Constant GEOIP_PROXY_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 32
PHP Notice: Constant GEOIP_ASNUM_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 33
PHP Notice: Constant GEOIP_NETSPEED_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 34
PHP Notice: Constant GEOIP_REGION_EDITION_REV0 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 35
PHP Notice: Constant GEOIP_REGION_EDITION_REV1 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 36
PHP Notice: Constant GEOIP_CITY_EDITION_REV0 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 37
PHP Notice: Constant GEOIP_CITY_EDITION_REV1 already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 38
PHP Notice: Constant GEOIP_ORG_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 39
PHP Notice: Constant GEOIP_ISP_EDITION already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 40
PHP Notice: Constant GEOIP_UNKNOWN_SPEED already defined in /is/htdocs/xxxx/xxxx/piwik/plugins/GeoIP/libs/geoip.inc on line 51[/quote]

Hallo Cebalraj,

Ich habe (scheinbar bisher) bei der einen betroffenen Piwik-Installation das Problem wie folgt gelöst:

  1. Aktuelle GeoIP Scripte auf den Server gebracht

  2. Die Piwik config.ini.php angepaßt

Und nun/bisher erscheinen keine Fehlermeldung mehr im Server-Errorlog

Ich werde das Errorlog weiterhin, also auch morgen überprüfen.

Hallo Cebalraj,

Ich habe meine vg. Änderungen inzwischen mehrmals überprüft, also auch die Server Errorlogs und es sind “bisher” keinerlei Fehlermeldung in der einen betroffenen Piwik-Installation (ich teilte ja bereits mit, das diese Fehlermelungen von dir und mir - lediglich in einer Piwik-Installation bei mir - auftraten) akt. erneut aufgetreten.

Somit, vorausgesetzt es bleibt so die nächsten Tage bei mir, wäre - mit Verlaub - dann dein unterstehender Hinweis im Tracking-Ticket:

nicht korrekt.

Ich stehe dir selbstverständlich - da ich durch deine Hinweise - etliches - ich hoffe es wirkt - erreicht habe, natürlich auch für Hilfe zur Verfügung.:wink:

da bin ich gespannt ob das weiter so klappt. Weiß nicht, wraum das bei mir Notices ausgegeben hat, aber dem werde ich noch nachgehen.
Ich hielt den Hinweis im Tracker für sinnvoll, weil das Problem ja für nicht gepatchte Versionen weiter besteht und der/die Entwickler sich das dann evtl. mal anschauen könnnen und so das Ganze optimieren können, daß es wieder ‘out of the box’ funktioniert.

Schöne Grüße …

Hallo Cebalraj,

eine soeben erfolgte Überprüfung in dem laufenden Errorlog hat ergeben, dass seit meinen Änderungen von gestern Abend:

  1. Aktuelle GeoIP Scripte auf den Server gebracht

  2. Die Piwik config.ini.php angepaßt

keine einzige der GeoIP Fehlermeldung mehr aufgetaucht ist.

Mit diesem Workaround - 1) und 2) - sollte es dann eigentlich auch bei dir zu beheben sein. :slight_smile:

Nachtrag:

Das Einzigste was mich noch etwas verwundert ist, dass seit allen gestern durchgeführten Änderungen im Zusammenhang mit dem GeoIP Problem wesentlich weniger Besucher gezählt werden.