【问题标题】:phpMyAdmin - cannot change session expiration timephpMyAdmin - 无法更改会话到期时间
【发布时间】:2015-01-10 07:03:20
【问题描述】:

我知道这个问题在 SO 网站上已经被问过很多次了。但是,我读过thisthisthisthisthisthis 等等。他们都没有工作。我还尝试更改会话文件的位置以及我现在不记得的其他内容。

我的设置:

一个:config.inc.php 文件:

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

这显示在 phpMyAdmin 设置中:

两个:.htaccess 文件:

php_value session.gc_maxlifetime 86400

三:来自phpMyAdmin根目录的phpinfo.php文件显示:

四:服务器(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 会话超时吗?

【问题讨论】:

  • 尝试重启你的 apache 和 mysql 服务
  • 已经启动了大约30-40次。这个问题我记得很久了(几年)。我永远无法更改 phpMyAdmin 会话时间。但我受够了。我什至考虑过改变它。
  • 您可能在最初尝试使其工作时无意中弄乱了某些东西。重新安装 phpMyAdmin、您的网络服务器,甚至可能是您的数据库可能会更容易。但这当然取决于您的设置。 Cookie 会话不应过期,只要它们被频繁地访问/(更改?)足以逃避过期。如果您不想走以前的路线,那就留下一个可能的解决方法。
  • 我现在使用的这台服务器只设置了几个月。以前的服务器对会话有“相同的东西”。在这台服务器上,我已经改回了我的更改,除了上面的设置。
  • apt-get 更新; apt-get 升级;试试这个来升级系统中的所有包。

标签: php phpmyadmin session-timeout


【解决方案1】:

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

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

所以你有两个选择:

  1. 禁用 cronjob(可能是 /etc/cron.d/php5)并启用 PHP 会话垃圾收集器,方法是将 session.gc_probability 设置为 1(在 所有 /etc/php5/*/php.ini 文件中)。 p>

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

【讨论】:

  • 现在(我按照您的建议进行了更改)看来会话不会过期。
【解决方案2】:

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

破解核心

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

走这条线

    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 完成工作后,您始终可以单击注销。

或使用浏览器插件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2012-03-06
    相关资源
    最近更新 更多