通过 .htaccess 增加 php 会话时间不起作用

通过 .htaccess 增加 php 会话时间不起作用

我想将会话超时设置为 6 小时,但我的浏览器仍然在半小时内超时。

我在 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

答案1

你的php_info() 证明设置已应用。

你使用的是 Debian 或 Ubuntu 吗?在这种情况下,有一个警告:Debian 维护人员已修补 PHP 包以通过以下方式清除未使用的会话定时任务. (以上内容不仅适用于 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

因此,这种分散化是基于全局设置而不是基于每个流程进行的。

我看到两种解决方案:

  1. 大约 20 分钟后(使用 time() 来了解何时超过时间阈值)关闭会话session_write_close()并再次打开。
  2. 你可以使用以下方法实现自己的会话处理程序session_set_save_handler并将会话数据保存在默认路径以外的其他地方。

无论您选择哪种路线,我建议您保留对 .htaccess 所做的修改。

让我们知道怎么回事 :-)

答案2

尝试在代码中执行此操作。如果您有header.phpconfig.php文件包含在任何地方,请将以下内容添加到其中:

ini_set("session.gc_maxlifetime", 21600);
session_set_cookie_params(21600);

相关内容