Pourquoi Debian nettoie-t-elle les sessions php avec un travail cron au lieu d'utiliser le récupérateur de place intégré de php?

26

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?

nulll
la source

Réponses:

29

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 le détournement de session PHP. Malheureusement, cela empêche également le ramasse-miettes de session PHP natif 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 à l'appui: Le comportement a été établi en réponse au bogue # 267720 . (Il y avait auparavant des commentaires dans le php.inifichier de stock à ce sujet, mais je ne les vois pas maintenant dans mon installation PHP basée sur Wheezy.)

asciiphil
la source
Perms sur / var / lib / php5 ar drwx-wx-wt (rooot-root), donc l'utilisateur apache peut écrire le contenu du répertoire (sticky bit), mais ne peut pas le lire. Je comprends donc que le garbage collector de php ne sera pas en mesure d'évaluer l'heure des fichiers de session, il ne peut donc pas choisir les fichiers à supprimer ... ai-je raison?
nulll
Oui c'est correct.
asciiphil
5

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.

ceejayoz
la source