Debian и производные (Ubuntu) не используют сборщик мусора сеанса php
session.gc_probability = 0
вместо этого они используют 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
Почему Debian выбрал именно это?
Поскольку Debian устанавливает очень строгие разрешения для /var/lib/php5
(1733, корень владельца, корень группы), чтобы предотвратить захват сеанса PHP. К сожалению, это также мешает работе собственного сборщика мусора сеанса PHP, потому что он не может видеть там файлы сеанса. Задание cron запускается от имени пользователя root, у которого достаточно прав для просмотра и очистки файлов сеанса.
редактировать: Подтверждающая документация: Поведение было установлено в ответ на ошибка # 267720. (Раньше в стоке были комментарии php.ini
файл об этом, но я не вижу их там сейчас в моей установке PHP на основе wheezy.)
Это, вероятно, будет немного более надежным на сайтах с низким трафиком (если вы получаете только пару сотен посещений в день, а GC запускается только каждую тысячу или около того, сеансы могут длиться намного дольше, чем следовало бы), и я полагаю, что это может быть немного менее жестко на сервере, чем собственный сборщик мусора, если у вас много сеансов.