phpMyAdmin - 无法更改会话到期时间

时间:2014-11-13 07:44:54

标签: php phpmyadmin session-timeout

我知道在SO网站上多次询问过这个问题。不过,我已阅读thisthisthisthisthisthis等内容。他们都没有工作。我还试图改变会话文件的位置和其他我现在不记得的东西。

我的设置:

一:config.inc.php文件:

<?php
$cfg['LoginCookieValidity'] = 3600 * 24; // http://docs.phpmyadmin.net/en/latest/config.html#cfg_LoginCookieValidity

这显示在phpMyAdmin设置中:

enter image description here

二:.htaccess档案:

php_value session.gc_maxlifetime 86400

三:来自phpMyAdmin root的phpinfo.php文件显示:

enter image description here

四:服务器(uname -a):

Linux ubuntu-13 3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

还有其他方法可以增加phpMyAdmin会话超时吗?

2 个答案:

答案 0 :(得分:9)

默认情况下,Ubuntu将禁用PHP会话垃圾收集器(通过将session.gc_probability的主值设置为0),并在它们达到特定年龄后使用cronjob删除会话文件。年龄由session.gc_maxlifetime的主值确定。

这意味着无论您的本地86400秒值(由于禁用会话垃圾回收而无效),cronjob将在1440秒后删除会话文件。

所以你有两个选择:

  1. 禁用cronjob(可能为/etc/cron.d/php5)并启用PHP会话垃圾回收器,方法是将session.gc_probability设置为1(在 all {{ 1}}文件)。

  2. /etc/php5/*/php.ini设置正确的主值。你的是1440秒。将它(在所有 session.gc_maxlifetime文件中)更改为服务器上任何虚拟主机/ php应用程序使用的最大本地值(因此至少86400秒)。

答案 1 :(得分:2)

PhpMyAdmin应该可以正常使用您的配置,当您最初尝试使其工作时,您可能已经搞砸了某些东西。因为您无法在服务器上重新安装phpmyadmin或进行升级。还有其他解决方案可以解决这个问题。

黑客入侵

我不认为这是一个好主意,但如果你真的想摆脱这个,你可以通过修改AuthenticationCookie.class.php中的libraries/plugins/auth/

来禁用该功能

走这条线

    if ($_SESSION['last_access_time'] < $last_access_time
    ) {
        PMA_Util::cacheUnset('is_create_db_priv', null);
        PMA_Util::cacheUnset('is_process_priv', null);
        PMA_Util::cacheUnset('is_reload_priv', null);
        PMA_Util::cacheUnset('db_to_create', null);
        PMA_Util::cacheUnset('dbs_where_create_table_allowed', null);
        $GLOBALS['no_activity'] = true;
        $this->authFails();
        if (! defined('TESTSUITE')) {
            exit;
        } else {
            return false;
        }
    }

并将其编辑为

    if (false
    ) {
        PMA_Util::cacheUnset('is_create_db_priv', null);
        PMA_Util::cacheUnset('is_process_priv', null);
        PMA_Util::cacheUnset('is_reload_priv', null);
        PMA_Util::cacheUnset('db_to_create', null);
        PMA_Util::cacheUnset('dbs_where_create_table_allowed', null);
        $GLOBALS['no_activity'] = true;
        $this->authFails();
        if (! defined('TESTSUITE')) {
            exit;
        } else {
            return false;
        }
    }

通过这样做,该功能将被禁用,并且不再有超时。使用phpmyadmin完成工作后,您始终可以单击注销。

或使用浏览器插件