PHP session.gc_maxlifetime为7200且不工作

PHP session.gc_maxlifetime为7200且不工作,php,session-variables,Php,Session Variables,在my.htaccess文件中: php_value session.gc_maxlifetime 7200 它显然被设置为7200秒,因为如果我在我的PHP网页中运行它: echo ini_get('session.gc_maxlifetime') . "<br>"; 编辑#1 session.save_path = /var/cpanel/php/sessions/ea-php72 session.cookie_lifetime = 0 我已经将session.gc_max

在my.htaccess文件中:

php_value session.gc_maxlifetime 7200
它显然被设置为7200秒,因为如果我在我的PHP网页中运行它:

echo ini_get('session.gc_maxlifetime') . "<br>";
编辑#1

session.save_path = /var/cpanel/php/sessions/ea-php72
session.cookie_lifetime = 0
我已经将session.gc_maxlifetime设置为9秒,在单击submit按钮之前,我可以运行下面的代码(在一个名为z.php的文件中)50分钟,并且session变量仍然被设置。很明显,有些事情我不明白

<?php
date_default_timezone_set('America/Montreal');
session_start();

echo "session.gc_maxlifetime = " . ini_get('session.gc_maxlifetime') . "<br>";


if ( isset($_POST['Save']) ) {
  if ( isset($_SESSION["alice"]) )
    echo "Set: " . $_SESSION["alice"] . "<br>";
  else
    echo "Not set<br>";
}


$_SESSION["alice"]="bob";

echo date('H:i:s') . " " . $_SESSION["alice"] . "<br>";

?>

<form id="theForm" action="z.php" method="post">
  <input type="submit" name="Save" value="Save">
</form>
我的其他网站正在清理会话变量是合乎逻辑的。所以我在别处设置了session.save_路径,现在session变量被设置为。。。永远。。。我想我们需要弄清楚如何进行垃圾收集。即使将gc_maxlife设置为1秒,会话变量也会永久保留

编辑#4

我不确定这样做是否正确,但我自己做了垃圾收集命令。一个每小时运行一次的简单cron,包括:

/usr/bin/find /session-folder-somewhere -mindepth 1 -maxdepth 1 -type f -cmin +240 -print0 -exec rm {} \; >/dev/null 2>&1

结果表明,此webhost上的session.gc_概率默认设置为0。我认为这无关紧要,因为在cron中进行简单的查找和删除应该可以完成这项工作。现在,我的会话持续4-5个小时,这正是我所需要的。

检查设置为什么。如果这是与服务器上运行的其他站点共享的文件夹,那么如果读取访问配置不严格(这也是一个安全问题),则使用的较低超时设置可能也会擦除会话文件,并检查
会话.cookie\u生存期。如果这低于您的gc_maxlife值,那么您仍然会丢失会话,因为客户端将不再发送ID。(假设您只传递基于cookie的消息,这是正常情况下应该传递的消息。)如果您已经阅读了有关PHP中文件系统会话存储处理的手册,则无需重新发明轮子。请检查设置为什么。如果这是与服务器上运行的其他站点共享的文件夹,那么如果读取访问配置不严格(这也是一个安全问题),则使用的较低超时设置可能也会擦除会话文件,并检查
会话.cookie\u生存期。如果这低于您的gc_maxlife值,那么您仍然会丢失会话,因为客户端将不再发送ID。(假设您只传递基于cookie的消息,这是您通常应该做的。)如果您已经阅读了关于PHP中文件系统会话存储处理的手册,就不需要重新发明轮子。
https://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
Note: If different scripts have different values of session.gc_maxlifetime but share the same place for storing the session data then the script with the minimum value will be cleaning the data. In this case, use this directive together with session.save_path. 
/usr/bin/find /session-folder-somewhere -mindepth 1 -maxdepth 1 -type f -cmin +240 -print0 -exec rm {} \; >/dev/null 2>&1