【发布时间】:2011-09-09 08:34:08
【问题描述】:
我想知道我们是否可以在 .htaccess 中为一个特定项目而不是整个 Web 服务器声明 session.gc_maxlifetime 设置?
如果是这样,我们该怎么做?喜欢下面的代码吗?
php_value session.gc_maxlifetime 2000
我试过了,但没有用,我还在项目的同一目录中创建了一个php.ini 文件,但它也没有用。
谢谢。
【问题讨论】:
我想知道我们是否可以在 .htaccess 中为一个特定项目而不是整个 Web 服务器声明 session.gc_maxlifetime 设置?
如果是这样,我们该怎么做?喜欢下面的代码吗?
php_value session.gc_maxlifetime 2000
我试过了,但没有用,我还在项目的同一目录中创建了一个php.ini 文件,但它也没有用。
谢谢。
【问题讨论】:
是的,session.gc_maxlifetime 是一个 PHP_INI_ALL 设置,因此可以在 .htaccess 中覆盖它:
php_value session.gc_maxlifetime 2000
还要确保您的 Apache 配置中的 <Directory> 条目支持覆盖:
AllowOverride Options
您也可能误解了此选项的用途。此选项不会设置会话的最长生命周期,它将设置垃圾收集器在会话无效时清理会话的时间量。这可以由很多因素决定,包括访问时间、修改时间、其他 INI 选项,例如 session.gc_probability 和 session.gc_divisor。
如果您想限制会话生命周期,请使用适当的机制,如@Gumbo 在How do I expire a PHP session after 30 minutes 中所述。
【讨论】:
AllowOverride 指令。确保您阅读了整个答案,因为我仍然认为您不知道 gc.maxlifetime 的真正作用。
据我所知,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 访问权限的文件夹的路径。
【讨论】: