Debian, PHP5, and session garbage collection

Poking around, like you do on your server, I noticed that php session files weren't being deleted, even after a few days. Turns out, PHP's automatic garbase collection is disabled on Debian. Instead, its replaced by a cron script that cleans out the /var/lib/php5 directory, which is where sessions are saved by default. If you're a security conscious PHP developer, you give each php application its own session save path. If you do that on a debian box, make sure you reenable garbase collection by setting seesion.gc_divisor to a positive integer.

; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

; This is disabled in the Debian packages, due to the strict permissions
; on /var/lib/php5. Instead of setting this here, see the cronjob at
; /etc/cron.d/php5, which uses the session.gc_maxlifetime setting below
;session.gc_probability = 0
session.gc_divisor = 100

Also, the README.Debian file spell this out, shame on me for not reading it, but it should also contain instructions for handling the above situation.

    Session files are stored in /var/lib/php5.  For security purposes, this
directory is unreadable by non-root users. This means that php5 running
from apache, for example, will not be able to clean up stale session
files. Instead, we have a cron job run every 30 mins that cleans up
stale session files; /etc/cron.d/php5. You may need to modify how
often this runs, if you've modified session.gc_maxlifetime in your
php.ini; otherwise, it may be too lax or overly aggressive in cleaning
out stale session files.
Tags: ,

Related Items

I ran into SSL timeouts on in local development setup when I was re-factoring some integration code with facebook and...
The function here will take an HTML fragment and return an array of useful images it finds. /** * extractImages...
Adam Culp posted the 3rd article in his Clean Development Series this week, Dirty Code (how to spot/smell it). When you...
This past weekend, my colleague and friend Sandy Smith participated in Election Hackathon 2012 (read his take of...
The linkedin password breach highlighted once again the risks associated with storing user passwords. I hope you are...
Finally. This is a huge step forward for Drupal. After eschewing OOP practices for a long time, its finally winning...