Piwik auf Shared Hosts

Nachdem in der letzten Bloxxo-Umfrage herauskam, dass das Statistik-Tool Piwik doch nicht so unbekannt ist, wie ich dachte, wollte ich heute einmal eine Erfahrung mit euch teilen, die ich gemacht habe.

Und zwar geht es dabei um ein Installationsproblem, das auch bereits im Piwik-Forum angesprochen wurde: einige Leute, die einen Account auf einem Shared Host haben, konnten Piwik nicht installieren, da der Installer nicht die nötigen Zugriffsrechte hatte - und das, obwohl diese extra vergeben wurden! Im Forum heißt es dazu wie folgt:

If I understand your answer correctly, it's not possible (or at least it's very cumbersome) to install piwik on a shared hosting environment because the ftp user will always be a different user than the apache one. [...]

I don't understand why the ownership makes any difference to the software once the tmp/ dir is world writable but I'm not a php expert so I can't help improve the code.
(Beitrag im Piwik-Forum)

Für den Teil der Leserschaft, die dem Englischen nicht allzu mächtig sind, hier ein unqualifizierter Übersetzungsversuch von mir:

Wenn ich deine Antwort richtig verstehe, ist es also nicht möglich (oder zumindest ziemlich aufwändig) Piwik in einer Shared-Hosting-Umgebung zu installieren, da der FTP-Benutzer immer ein anderer sein wird, als der des Apache. [...]

Ich verstehe nicht, warum die Eigentümerschaft einen Unterschied für die Software macht, sobald alle Benutzer Schreibrechte für den tmp/ Ordner erhalten haben, aber ich bin kein PHP-Experte und kann deshalb nicht dabei helfen, den Quelltext zu verbessern.

Das Problem ist mir in den letzten Jahren schon mehrfach über den Weg gelaufen - bisher habe ich jedoch noch keine zufrieden-stellende Lösung gefunden. Aber fangen wir von vorne an - nämlich bei einer funktionierenden Installation:

Piwik: systemCheck

Piwik: systemCheck

Wie man an den markierten Teilen sehen kann, wird nicht nur Schreibzugriff auf den Ordner "tmp/" benötigt, sondern auch noch auf einige Unterordner - nämlich:

  • tmp/cache/
  • tmp/latest/
  • tmp/sessions/
  • tmp/templates_c/

Und hier kommt nun das Problem: die Ordner sind während der Installation nicht vorhanden - also versucht der Installer, sie anzulegen: logisch! Allerdings kriegt die Software es nicht hin, dabei die Rechte des Überordners zu übernehmen (warum auch immer). Dadurch verliert die Software die Schreibrechte an den selbsterstellten Unterordnern und daraus resultierend folgt der beschriebene Zugriffsfehler.

Die Lösung hierfür ist relativ trivial: anstatt die entsprechenden Ordner vom Installer anlegen zu lassen, legt man sie selbst an und vergibt im vorhinein die passenden Zugriffsrechte (chmod 777) und voila: die Installation klappt auch auf dem Shared Host!
Natürlich sollte man nicht vergessen, dass man auch die Rechte für den "config/" Ordner korrekt setzen sollte, damit der Installer die während des Installationsprozesses gemachten Einstellungen auch abspeichern kann 😀 .

Hier übrigens noch ein kleiner Tipp am Rande: wenn man Piwik fertig installiert hat und alles konfiguriert hat, sollte man alle nicht-benötigten Plugins deaktivieren. Bei mir beläuft sich die Liste der aktiven Piwik-Plugins lediglich auf folgende:

  • Actions
  • DBStats
  • Dashboard
  • Live
  • Login
  • Provider
  • Referers
  • UserCountry
  • UserSettings
  • VisitFrequency
  • VisitTime
  • VisitorInterest
  • VisitsSummary

Als weitere Sicherungsmaßnahme kann man übrigens zudem die "index.php" per ".htaccess" Datei (und ".htpasswd" Datei) absichern, sowie den "misc/" Ordner vom Server löschen, um ein paar Angriffe von außen zu erschweren.
Danach kann man sich dann über ein möglichst sicheres Piwik freuen, das einem hoffentlich viele nützliche Statistiken liefern wird 😉 .

Hast du schon einmal versucht, Piwik bei dir zu installieren? War der Versuch von Erfolg gekrönt? Falls nein: würdest du es jetzt noch einmal versuchen wollen?
Update:
In der Version 0.4.x wird zusätzlich der Ordner tmp/sessions/ benötigt.
Piwik-Grüße, Kenny

4 Kommentare » Schreibe einen Kommentar

  1. Piwik? Sagt mir nichts. Aber sieht interessant aus. Ist das Live oder nur eine Art Google Analytics in klein? Wenn es live ist, wie bekommt es seine Daten live vom Besucher? Cookies?
    Ich benutze für die Live Analyse derzeit ja Woopra aber das ist (glaube ich zumindest) noch nicht die perfekte Lösung.

    Was die Installation angeht: Ordner mit 777 zu erstellen ist natürlich ein Sicherheitsrisiko, auch wenn man danach die Rechte wieder korrigiert.
    Einfacher ist es in die Root .htaccess folgende Zeile zu packen:
    AddHandler php5-cgi .php
    Dann werden alle Scripte (die Installation läuft sicher über ne .php) mit den nötigen Rechten gestartet, dann kann die Installation sowohl Ordner erstellen als auch sie verändern.
    Die Zeile sollte bei dir sowieso in der .htaccess stehen, verhindert hier und da Rechteprobleme und Stess.

    • Es ist live: durch einfaches JavaScript (oder alternativ durch nen Image-Load) werden die Daten in einer DB gesammelt. Man kann allerdings die Aggregation (das Errechnen der Stats) zeitlich steuern, wenn man eine High-Traffic-Webpage betreiben sollte.

      Die Lösung, die ich hier beschrieben habe, ist für Shared Hosts gedacht. Wenn man Rootzugriff auf's System hat, sollte die Installation keine Probleme darstellen. Da ich soetwas bisher aber noch nicht habe (meine Domains liegen auf einem Shared Host), musste ich dieses Problem umschiffen. Da ich auf einem Shared Host liege, ist es auch fraglich, ob die Konfiguration in der .htaccess überhaupt erlaubt ist/funktionieren würde.

      • Live is cool! ^^
        Image Load heißt jetzt, dass z.b. ein 1x1px Image alle 10 Sekunden nachgeladen und dadurch der Livezustand ermittelt werden kann? Das wäre vielleicht besser als mit Cookies.

        Auf meinem Shared Host hat die Variante mit der .htaccess funktioniert und das sollte bei fast allen Hosts so sein. Die meisten haben es auch in ihrer FAQ zu stehen.
        Bei Hosts, die im FTP Bereich nicht zwischen PHP User und normalen User unterscheiden brauch man diesen ganzen Kram natürlich nicht.

        • Nein. Sooo live nun auch wieder nicht! Man sieht halt im Dashboard, sobald jemand eine Seite aufgerufen hat. Das funktioniert natürlich nur pro Page-Load, der Status wird nicht alle x Sekunden überprüft. 😀

          Naja, bei mir läuft es ja nun - mit den Userrechten rumpfuschen, das erspare ich mir lieber.

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.