在htaccess中声明会话最大生命周期

时间:2011-06-06 14:26:20

标签: php session

我想知道我们是否可以在.htaccess中为一个特定项目而不是整个网络服务器声明session.gc_maxlifetime设置?

如果是这样,我们怎么做?像下面的代码一样?

php_value session.gc_maxlifetime 2000

我已经尝试了它并且它不起作用,我在项目的同一目录中创建了一个php.ini文件,它也没有用。

感谢。

2 个答案:

答案 0 :(得分:14)

是的,session.gc_maxlifetime是一个PHP_INI_ALL设置,因此可以在.htaccess中覆盖:

php_value session.gc_maxlifetime 2000

还要确保Apache配置中的<Directory>条目支持覆盖:

AllowOverride Options

您也可能误解了此选项的用途。此选项不会设置会话的最长生命周期,它将设置垃圾收集器在会话无效时清除会话的时间。这可以通过许多因素来确定,包括访问时间,修改时间,其他INI选项,例如session.gc_probabilitysession.gc_divisor

如果您想限制会话生命周期,请使用适当的机制,如@ How do I expire a PHP session after 30 minutes中的@Gumbo所述。

答案 1 :(得分:2)

据我所知,gc_maxlifetime值可以在任何地方设置:

http://php.net/manual/en/session.configuration.php

http://www.php.net/manual/en/configuration.changes.modes.php

所以你也可以通过ini_set(...)在你所有页面中包含的php文件中设置它。

无论如何,我认为.htaccess中的代码也可以正常工作。也许你错过了其他的东西,例如

php_value session.save_path "/PATH/TO/SESSIONS"

其中PATH / TO / SESSIONS是您拥有777访问权限的文件夹的路径。