Debian et dérivés (Ubuntu) n'utilisent pas le ramasse-miettes de session php
session.gc_probability = 0
à la place, ils utilisent un 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
Pourquoi Debian a choisi de faire cela?
Parce que Debian définit des autorisations très strictes sur /var/lib/php5
(1733, racine du propriétaire, racine du groupe) pour empêcher PHP détournement de session. Malheureusement, cela empêche également le collecteur d'ordures de session natif PHP session) de fonctionner, car il ne peut pas y voir les fichiers de session. Le travail cron s'exécute en tant que root, qui dispose d'un accès suffisant pour voir et nettoyer les fichiers de session.
Edit : Documentation de support: Le comportement a été établi en réponse à bug # 26772 . (Il y avait des commentaires dans le stock php.ini
fichier à ce sujet, mais je ne les vois pas maintenant dans mon installation basée sur wheezy PHP install.)
Il est susceptible d'être un peu plus fiable sur les sites à faible trafic (si vous n'obtenez que quelques centaines de visites par jour et que le GC ne se déclenche que tous les mille environ, les sessions peuvent rester bien plus longtemps qu'elles ne le devraient) et j'imagine que cela pourrait être un un peu moins dur sur le serveur que le GC natif si vous avez beaucoup de sessions.