我想知道我们是否可以在.htaccess
中为一个特定项目而不是整个网络服务器声明session.gc_maxlifetime
设置?
如果是这样,我们怎么做?像下面的代码一样?
php_value session.gc_maxlifetime 2000
我已经尝试了它并且它不起作用,我在项目的同一目录中创建了一个php.ini
文件,它也没有用。
感谢。
答案 0 :(得分:14)
是的,session.gc_maxlifetime是一个PHP_INI_ALL设置,因此可以在.htaccess中覆盖:
php_value session.gc_maxlifetime 2000
还要确保Apache配置中的<Directory>
条目支持覆盖:
AllowOverride Options
您也可能误解了此选项的用途。此选项不会设置会话的最长生命周期,它将设置垃圾收集器在会话无效时清除会话的时间。这可以通过许多因素来确定,包括访问时间,修改时间,其他INI选项,例如session.gc_probability和session.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访问权限的文件夹的路径。