Warum reinigt Debian PHP-Sitzungen mit einem Cron-Job, anstatt den integrierten Garbage Collector von PHP zu verwenden?

26

Debian und Derivate (Ubuntu) verwenden den Garbage Collector für PHP-Sitzungen nicht

session.gc_probability = 0

Stattdessen verwenden sie einen cron /etc/cron.d/php5

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Warum hat sich Debian dazu entschieden?

nulll
quelle

Antworten:

29

Weil Debian sehr strenge Berechtigungen für /var/lib/php5(1733, Eigentümerstamm, Gruppenstamm) festlegt , um die Entführung von PHP-Sitzungen zu verhindern. Leider verhindert dies auch, dass der native Garbage Collector für PHP-Sitzungen funktioniert, da die Sitzungsdateien dort nicht angezeigt werden. Der Cron-Job wird als Root ausgeführt, der über ausreichende Zugriffsrechte verfügt, um die Sitzungsdateien anzuzeigen und zu bereinigen.

Bearbeiten : Unterstützende Dokumentation: Das Verhalten wurde als Reaktion auf den Fehler # 267720 festgestellt . (Früher gab es Kommentare in der Lagerdatei php.inidazu, aber ich sehe sie jetzt nicht in meiner wheezy-basierten PHP-Installation.)

asciiphil
quelle
Perms on / var / lib / php5 sind drwx-wx-wt (rooot-root), so dass der Apache-Benutzer den dir-Inhalt (Sticky-Bit) schreiben kann, ihn aber nicht lesen kann. Ich verstehe also, dass der Garbage Collector von PHP den Zeitpunkt der Sitzungsdateien nicht auswerten kann, sodass er nicht auswählen kann, welche Dateien gelöscht werden sollen ... stimmt das?
NULL
Ja das ist richtig.
Asciiphil
5

Es ist wahrscheinlich ein bisschen zuverlässiger auf Websites mit geringem Datenverkehr (wenn Sie nur ein paar hundert Treffer pro Tag erhalten und GC nur alle tausend oder so abfeuert, bleiben die Sitzungen möglicherweise viel länger als sie sollten), und ich stelle mir vor, dass dies ein Problem sein könnte etwas weniger hart auf dem Server als auf dem nativen GC, wenn Sie viele Sitzungen haben.

ceejayoz
quelle