Я хочу установить тайм-аут сеанса до 6 часов, но мой браузер все еще отключается через 1/2 часа.
Я нахожусь на сервере PLESK.
Я обновил .htaccess
php_value session.gc_maxlifetime 21600
php_value session.cache_expire 21600
php_value session.cookie_lifetime 21600
Вот соответствующая PHPinfo:
Local Master
session.gc_maxlifetime 21600 1440
session.cache_expire 21600 180
session.gc_maxlifetime 21600 1440
Ваш php_info()
доказывает что настройки применены.
Вы используете Debian или Ubuntu? В таком случае есть предостережение: разработчики debian исправили пакет PHP, чтобы очистить неиспользуемые сеансы через crontab. (Вышесказанное может относиться не только к Debian / Ubuntu, зависит от разработчиков дистрибутива)
# /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/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
Таким образом, такая децентрализация осуществляется на основе глобальных настроек, а не для отдельных процессов.
Я вижу два решения:
session_write_close()
и откройте его снова.Какой бы маршрут вы ни выбрали, я предлагаю вам сохранить изменения, которые вы внесли в .htaccess.
Дайте нам знать, как это происходит :-)
Вместо этого попробуйте сделать это в своем коде. Если у вас есть header.php
или config.php
файл, который включен везде, добавьте к нему это:
ini_set("session.gc_maxlifetime", 21600);
session_set_cookie_params(21600);