PhpMyAdmin - не может изменить время окончания сеанса
Я знаю, что этот вопрос был задан много раз на веб-сайте SO. Тем не менее, я прочитал этот, этот, this, this, this и это и многое другое. Ни один из них не работал. Я также попытался изменить местоположение файлов сеансов и другие вещи, которые я не помню сейчас.
Моя настройка:
один: файл 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
three: phpinfo.php
файл из корня phpMyAdmin показывает:
![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-сессии (установив главное значение session.gc_probability
на 0
), а вместо этого используйте cronjob для удаления файлов сеанса после достижения определенного возраста. Возраст определяется ведущим значением session.gc_maxlifetime
.
Это означает, что независимо от вашего локального значения 86400 секунд (которое не действует из-за отключенной сборки мусора сеанса) cronjob будет удалять файлы сеанса через 1440 секунд.
Итак, у вас есть 2 варианта:
-
Отключите cronjob (возможно, /etc/cron.d/php5
) и включите сборщик мусора PHP-сессии, установив session.gc_probability
в 1
(во всех файлах /etc/php5/*/php.ini
).
-
Задайте правильное главное значение для session.gc_maxlifetime
. У вас 1440 секунд. Измените его (во всех файлах /etc/php5/*/php.ini
) на наибольшее локальное значение, которое использует любое приложение виртуального хоста /php на сервере (так, по крайней мере, 86400 секунд).
Ответ 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.
Или использовать надстройку браузера