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

2022-08-30 23:40:48

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

我的设置:

一:文件: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根的文件显示: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会话超时?


答案 1

默认情况下,Ubuntu 将禁用 PHP 会话垃圾回收器(通过将 master 值设置为 ),而不是使用 cronjob 在会话文件达到特定期限后将其删除。年龄由 的主值确定。session.gc_probability0session.gc_maxlifetime

这意味着,无论您的本地 86400 秒值如何(由于禁用了会话垃圾回收而没有任何影响),cronjob 都将在 1440 秒后删除会话文件。

所以你有2个选择:

  1. 禁用 cronjob(可能 )并通过设置为(在所有文件中)来启用 PHP 会话垃圾回收器。/etc/cron.d/php5session.gc_probability1/etc/php5/*/php.ini

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


答案 2

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

破解核心

我不认为这是一个好主意,但如果你真的想摆脱它,你可以通过修改来禁用该功能。AuthenticationCookie.class.phplibraries/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完成工作时,您可以随时单击注销。

或使用浏览器加载项


推荐