我知道在SO网站上多次询问过这个问题。不过,我已阅读this,this,this,this,this和this等内容。他们都没有工作。我还试图改变会话文件的位置和其他我现在不记得的东西。
我的设置:
一: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 root的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会话超时吗?
答案 0 :(得分:9)
默认情况下,Ubuntu将禁用PHP会话垃圾收集器(通过将session.gc_probability
的主值设置为0
),并在它们达到特定年龄后使用cronjob删除会话文件。年龄由session.gc_maxlifetime
的主值确定。
这意味着无论您的本地86400秒值(由于禁用会话垃圾回收而无效),cronjob将在1440秒后删除会话文件。
所以你有两个选择:
禁用cronjob(可能为/etc/cron.d/php5
)并启用PHP会话垃圾回收器,方法是将session.gc_probability
设置为1
(在 all {{ 1}}文件)。
为/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完成工作后,您始终可以单击注销。
或使用浏览器插件