【问题标题】:Declaring Session Max Life Time in htaccess在 htaccess 中声明 Session Max Life Time
【发布时间】:2011-09-09 08:34:08
【问题描述】:

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

如果是这样,我们该怎么做?喜欢下面的代码吗?

php_value session.gc_maxlifetime 2000

我试过了,但没有用,我还在项目的同一目录中创建了一个php.ini 文件,但它也没有用。

谢谢。

【问题讨论】:

    标签: php session


    【解决方案1】:

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

    php_value session.gc_maxlifetime 2000
    

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

    AllowOverride Options
    

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

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

    【讨论】:

    • 如何使其可覆盖?谢谢。
    • @Braveyard:已经在我的回答中了。这是AllowOverride 指令。确保您阅读了整个答案,因为我仍然认为您不知道 gc.maxlifetime 的真正作用。
    • 感谢您的回答。我想我对那个设置了解得更多。顺便说一句,我喜欢这个链接。
    • 这应该是 gc_maxlifetime 中的下划线(复制后我花了一段时间才找到它)
    • 当我在托管服务器上设置域时,这对我有帮助:D
    【解决方案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 访问权限的文件夹的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2016-06-06
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多