UbuntuでPHPセッションがすぐ切れる

概要

Ubuntu上に作成したWebページのPHPセッションがすぐ切れてしまう。
CentOS上に作成した同Webページは問題なくセッションは維持される。

原因

Ubuntuでは定期的にPHPのセッションを消しにかかる処理がcronに設定されているため。
CentOSはこのような設定はされていない。

詳細

cron設定の確認

$ vi /etc/cron.d/php
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

cron実行ログ

# /var/log/syslog
Mar 26 20:09:00 test_user systemd[1]: Starting Clean php session files...
Mar 26 20:09:00 test_user systemd[1]: Started Clean php session files...
 :
Mar 26 20:39:00 test_user systemd[1]: Starting Clean php session files...
Mar 26 20:39:00 test_user systemd[1]: Started Clean php session files...

毎時09分と39分に「Clean php session」が実行されている。

修正方法

cron設定をコメントアウト

$ vi /etc/cron.d/php
# Look for and purge old sessions every 30 minutes
# 09,39 * * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

ここをコメントアウトしただけでは設定が無効にならない。
更にphpsessionclean.timerを止める必要がある。

phpsessionclean.serviceを起動するサービスを停止

# systemctl stop phpsessionclean.timer
# systemctl disable phpsessionclean.timer

参考

cron reschedule seems not to be taken into account unless reboot occurs?