Чому Debian прибирає сеанси php із завданням cron замість того, щоб використовувати вбудований збирач сміття php?


26

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 вирішив це зробити?

Відповіді:


29

Оскільки Debian встановлює дуже жорсткі права на /var/lib/php5(1733, root власника, корінь групи) для запобігання викрадення сеансів PHP. На жаль, це також перешкоджає роботі рідного сміттєзбірника сеансу PHP, оскільки він не може бачити файли сеансу. Завдання cron працює як root, який має достатній доступ для перегляду та очищення файлів сеансу.

Редагувати : Супровідна документація: поведінку було встановлено у відповідь на помилку №267720 . (Раніше у фондовому php.iniфайлі були коментарі , але я зараз не бачу їх у моїй установці PHP на базі хрипів.)


Perms on / var / lib / php5 ar drwx-wx-wt (root-root), тому користувач apache може записати вміст dir (липкий біт), але не може його прочитати. Тож я розумію, що збирач сміття php не зможе оцінити час файлів сеансу, тому він не може вибрати, які файли буде видалено ... я прав?
nulll

Так, це правильно.
asciiphil

5

Це може бути трохи надійніше на сайтах з низьким трафіком (якщо ви отримуєте лише пару сотень звернень на день, а GC справляє лише кожну тисячу або більше, сеанси можуть тривати довше, ніж слід), і я думаю, що це може бути трохи менше суворо на сервері, ніж у рідному GC, якщо у вас багато сеансів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.