PHP Version 5.2.6-1+lenny9
lighttpd
mysql (Client API version 5.0.51a )
darauf habe ich piwik installiert. Soweit alles ok.
Da ich mehrere Website hinzufügen will und die weit mehr als 100000 Besucher pro Tag haben möchte ich den Auto Archiv Cron laufen lassen.
session
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 0 0
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php5 /var/lib/php5
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
Bereits versuchte Lösungsansätze:
tmp/session chmod -R 777
/var/lib/php5/ chmod -R 777
Cron nicht mit www-data sondern mit root ausführen
Kann mir bei dem Problem bitte jemand helfen ich verzweifele!!
Mit freundlichen Grüßen
dreamz
EDIT:
Ich sollte vielleicht noch dazusagen, dass der Weblogin etc. alles einwandfrei funktioniert.
I check session.save_path, it’s set to /tmp and chmod of /tmp is 777.
I chmod Piwik/tmp/ to 777 and the same for Piwik/tmp/sessions.
I test to run sh script with root user and web site user.
I always have the same bad output.
I put some echo in archive.sh and all commands like “$PHP_BIN -q $PIWIK_PATH …” (CMD_TOKEN_AUTH, CMD_GET_ID_SITES…) return the html Piwik Error.
War das phpinfo vom Webserver oder auf der Konsole?
Teilweise nutzen php im Webserver und php auf der Konsole andere php.ini-Dateien (unter Gentoo auf jeden Fall), daher sollte der phpinfo Output auf der Konsole geprüft und evtl. die korrekte php.ini-Datei geändert werden.
ich habe das gleiche Problem und keine Lösung in Sicht.
Wie Thomas Seifert meinte ist es richtig, dass für php aufrufe von der Konsole andere php.ini gelten als per webserver.
Dort habe ich natürlich auch für korrekte Einträge in der php.ini bei session.save_path gesorgt.
Aber wie hpsam schon sagte, erzeugen CMD_TOKEN_AUTH, CMD_GET_ID_SITES diesen fehler.
sämtliche in Frage kommende tmp verzeichnisse haben die berechtigung chmod 777, ich sehe echt kein land mehr.
ich habe auch eine bootstrap.php erzeugt, um zu prüfen welche tmp verzeichnisse benutzt werden, es scheinen die richtigen zu sein.
Noch irgendwelche ideen?
ich habe mich noch mit etwas Debugging beschäftigt, hier meine Erkenntnisse:
In der Session.php findet ein Exception Handling statt, doch die Fehlermeldung, die wir oben gesehen haben wird immer ausgegeben, auch wenn die Verzeichnisse schreibbar sind. Das Problem ist, dass schon eine Session geöffnet wurde.
Ich habe in der archive.sh folgendes geändert:
TOKEN_AUTH=$CMD_TOKEN_AUTH
echo $TOKEN_AUTH
Um zu sehen, was das ergebnis ist.
Ich habe in der Session.php folgende Änderungen gemacht und mir die Exception mal ausgeben lassen:
try {
Zend_Session::start();
} catch(Exception $e) {
// This message is not translateable because translations haven't been loaded yet.
$x1 = @is_writable($sessionPath);
Piwik_ExitWithMessage('x1 ' . $x1 . ' Unable to start session. Check that session.save_path or tmp/sessions is writeable. ' . $sessionPath . ' ' . $e);
Die Ausgabe ist
x1 1 Unable to start session. Check that session.save_path or tmp/sessions is writeable. /kunden/.../webroots/ssl/piwik/tmp/sessions exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser; output started in /0' in /kunden/.../webroots/ssl/piwik/libs/Zend/Session.php:454 Stack trace: #0 /kunden/.../webroots/ssl/piwik/core/Session.php(81): Zend_Session::start() #1 /kunden/.../webroots/ssl/piwik/index.php(51): Piwik_Session::start()
Interpretation:
x1 = 1, d.h. temp ist schreibbar. Das ist also nicht das Problem. Vielmehr kommt das Problem daher, dass schon eine Session offen ist.
Warum könnte das Sein? Keine Ahnung. Irgendwelche Ideen?
Ich habe das mit session.auto_start on und off versucht, keine Änderung im Verhalten.
Ich habe das gleiche Phänomen auch auf einer zweiten Piwik installation. Funktioniert die archive.sh überhaupt für irgendjemand?
archive.sh funktioniert wunderbar bei den meisten, so auch bei mir.
ZendSession scheint irgend eine Exception zu werfen und in der Fehlermeldung wird nur der wahrscheinlichste Fall ausgegeben.
Du kannst ja mal versuchen, Dir den Inhalt der Exception ausgeben zu lassen:
selbe Problematik auch hier. Skript wurde mit verschiedensten Usern (root/www-data/vhost user) ausgeführt und die tmp-dirs haben alle 777. Hat nichts genützt. Sehr seltsam.
Ist hier schon jemand weitergekommen?
ja, ich habe mir den exception Text ja schon ausgeben lassen. Wie oben erwähnt:
exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser;
output started in /0' in /kunden/.../webroots/ssl/piwik/libs/Zend/Session.php:454
Stack trace: #0 /kunden/.../webroots/ssl/piwik/core/Session.php(81): Zend_Session::start()
#1 /kunden/.../webroots/ssl/piwik/index.php(51): Piwik_Session::start()
Es ist definitiv ein Problem damit, wann von wo die Session gestartet wird. Evtl. wird schon ein Header oder sowas gesendet bevor session.start() aufgerufen wird.
Die Temp Verzeichnisse sind schreibbar, wie oben erwähnt, und in meinem vorigen Code nachgeprüft.
Das heisst im Klartext, es hat nichts mit Berechtigungen zu tun und das ganze von root aufzurufen bringt keine Änderung.
Es ist ein Session-start Problem.
session.auto_start = 1 müsste das Problem eigentlich lösen, tut es bei mir aber nicht.
Der Browser benutzt eine andere php.ini als der direkte Aufruf von der Konsole, auch das ist mir bekannt.
Habe dort session.auto_start auch auf 1 gestellt, bringt aber rein garnichts.
Freunde, bitte helft mir weiter, ich bin am verzweifeln.
Ich möchte diese Software für einen professionellen Onlineshop nutzen, aber so wird das nichts.
@ThomasN: Ich habe das Problem bei Domainfactory jetzt gelöst. Es liegt an PHP, ich vermute irgendein fieser Bug in Zusammenhang mit der spezifischen Umgebung bei Domainfactory.
Und zwar funktionieren Sessions grundsätzlich nicht, wenn man ein Script mit php -q auf Kommandozeile aufruft. Grund scheint die Funktion headers_sent() zu sein, die bei der Option -q immer true zurückgibt - auch wenn gar keine Header gesendet wurden.
Das Problem ließ sich bei mir nur durch eine eigens kompilierte Version von PHP lösen. Entweder bittest du die Technik darum, oder du machst es selber (wenn du einen entsprechenden SSH-Account hast).
Das Verzeichnis /kunden/KUNDENNUMMER/bin/php-cli erstellen.
Gehe in das Verzeichnis, in das du PHP entpackt hast und kompiliere PHP wie folgt:
./configure --prefix=/kunden/KUNDENNUMMER/bin/php-cli --with-pdo-mysql --with-zlib-dir=pfad-zu-entpackter-zlib --enable-cli --disable-cgi
make
make install
Wichtig: ohne --with-pdo-mysql und --with-zlib-dir funktioniert Piwik nicht!
Den Cronjob von Piwik (archive.sh) wie folgt ändern:
Wenn du Hilfe von der Technik brauchst, schick mir ne Nachricht, dann kann ich dir die Ticketnummer geben, unter der ich das Problem mit df schon diskutiert habe. Dann kannst du dich darauf beziehen und wahrscheinlich geht es dann schneller.
Edit: natürlich muss es bei configure --disable-cgi heißen! Sorry, Tippfehler!
Ich habe wegen einem Konfigurationsproblem mit Wordpress meinen Server von Apache auf FastCGI umgestellt. Seitdem läuft Wordpress korrekt, allerdings gibt Piwik den Geist auf: “Unable to start session. Check that session.save_path or tmp/sessions is writeable, and session.auto_start = 0.”
Ich habe die initiale Installation von Piwik gemacht, als der Server noch nicht auf FastCGI lief - allerdings schon mit dem aktuellen Release in dem ich die obigen Änderungen nachvollziehen kann. Muss ich Piwik nocheinmal neu installieren oder kann ich ihm beibringen, dass ab sofort FastCGI berücksichtigt werden muss?