Das ist wieder mal ein Posting, welches vor allem mir selber als Gedankenstütze dienen soll, damit ich beim nächsten mal, wenn dieses Problem auftritt, nicht so viel Zeit verliere:
Ich hatte das Problem, dass “alte” PHP-Sessions unter meinem Debian-System nicht gelöscht wurden. Für’s Löschen zuständig ist der Cron-Job /etc/cron.d/php5.
Da auf dem Server verschiedene Webapplikationen laufen, werden aus Sicherheitsgründen verschiedene Pfade für die Session-Files verwendet. Für jeden dieser Pfade ist im Cron-Job eine Zeile in folgender Art geschrieben:
# Look for and purge old sessions every 30 minutes 09,39 * * * * root [ -d /sessionspath1 ] && find /sessionspath1/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm 10,40 * * * * root [ -d /sessionspath2 ] && find /sessionspath2/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
Aus einem mir unklaren Grund wurden die Sessions nicht gelöscht, obwohl die einzelnen Befehle (als root) funktionsfähig waren:
[ -d /sessionspath1 ] && find /sessionspath1/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
Bei der Fehlersuche bin ich dann auf die Log-Datei /var/log/syslog aufmerksam geworden, wo der Cron-Job seine Befehle aufzeichnet. Ich habe dann zunächst die Datei /etc/syslogd.conf editiert und das Kommentarzeichen vor cron.* weggenommen. Danach den Syslog-Dämon neu gestartet mit /etc/init.d/sysklogd restart , damit die Cron-Befehle in einer speziellen Datei /var/log/cronlog abgelegt werden.
Das Neustarten des Cron-Dämon’s hat dann einen Eintrag im LOG-File hinterlassen:
syslog.0:Jan 12 10:56:49 prag092 cron[4308]: Error: bad minute; while reading /etc/cron.d/php5
Mit dieser Fehlermeldung war dann der Fehler leicht zu finden. Tricky war dann allerdings, dass das reine Korrigieren in der /etc/cron.d/php5 – Datei noch nicht ausgreicht hat, sondern ein Neustart des Cron-Daemons nötig war.