PHP会话超时

5

有人能够详细说明如何在PHP中使会话持续更长时间,但不使用php.ini吗?

我尝试了以下内容在.htaccess文件中:

<IfModule mod_php5.c>
    #Session timeout
    php_value session.cookie_lifetime 3600
    php_value session.gc_maxlifetime 3600
</IfModule>

我也尝试过以下方法:
ini_set('session.gc_maxlifetime', '3600');

但是似乎它们都没有起作用。有什么想法吗?

你确定使用 '3600' 吗?我的意思是,你在使用引号,你尝试过 ini_set('session.gc_maxlifetime', 3600); 吗?(在 3600 附近没有单引号) - bungdito
比什么更长?根据您当前的配置,您的会话应该持续一个小时。 - Gumbo
是的 - 使用我上面输入的代码 - 但它也不起作用。 我只想增加到所需的任何长度... - user398341
此外,单引号不会改变任何东西... - user398341
3个回答

8

好的 - 我找到了方法并且它可行 - 在.htaccess文件中,我只需添加以下内容即可将超时时间增加至5小时:

php_value session.cookie_lifetime 18000
php_value session.gc_maxlifetime 18000

7

在许多共享主机上,所有会话都存储在同一位置。由于垃圾回收的工作方式,这意味着每个人的会话在最短的GC间隔后都被删除。

一个解决方案是执行以下操作:

php_value session.save_path "/my/personal/path"
php_value session.gc_maxlifetime "3600"

或者您可以设置自定义会话保存处理程序。首先尝试更改保存路径,因为自定义处理程序有点棘手。


0
与php-fpm配合使用,您可以在目录中使用.user.ini代替.htaccess文件(像.htaccess文件一样递归工作)。
session.cookie_lifetime=18000
session.gc_maxlifetime=18000

请查看this,了解更改值后何时应用这些值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接