O php5 deve vir com uma tarefa cron padrão para remover arquivos de sessão.
No Debian / Ubuntu, é como o seguinte (cópia direta do Ubuntu 12.04 LTS)
/etc/cron.d/php5
# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime
# Look for and purge old sessions every 30 minutes
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
Ele é executado a cada meia hora e remove a base de sessão expirada em session.gc_maxlifetime em php.ini .
Então você deve fazer o seguinte:
- Verifique se você tem o arquivo de trabalho cron acima. Adicione se estiver faltando.
-
Verifique o valor de session.gc_maxlifetime em /etc/php5/apache2/php.ini
O valor padrão de session.gc_maxlifetime no Ubuntu é 1440sec = 24min
session.gc_maxlifetime = 1440
-
Se o 2 acima parecer normal, tente executar manualmente a linha de comando no cron job. Isso imprimirá todos os erros na tela.
- Grep para erro cron em / var / log / syslog. Veja se eles estão relacionados com php.
Com relação aos bilhões de arquivos de sessão já existentes, você precisa excluí-los manualmente por enquanto.
Para colocar a situação atual sob controle
service apache2 stop
mv /var/lib/php5 /var/lib/php5.delete
mkdir /var/lib/php5
chmod 733 /var/lib/php5
chmod o+t /var/lib/php5
service apache2 start
Em seguida, exclua /var/lib/php5.delete. Isso pode levar horas. Ao mesmo tempo, fique de olho no número do arquivo no novo diretório / var / lib / php5 . Se estiver aumentando de forma anormal, você tem um problema que não seja remover arquivos.
Executar manualmente a linha de comando do cron job
Basta colocar a parte depois de root no prompt de comando, como segue
[ -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