phpMyAdmin-не удается изменить время окончания сеанса

Я знаю, что этот вопрос задавался много раз на веб-сайте SO. Однако я читал этой, этой, этой, этой, этой и этой и многое другое. Ни одна из них не сработала. Я также попытался изменить местоположение файлов сеанса и другие вещи, которые я сейчас не помню.

Мои настройки:

первая::

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

это проявляется в настройки phpMyAdmin:

enter image description here

второй: :

php_value session.gc_maxlifetime 86400

третий: 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?

2 ответов


Ubuntu по умолчанию отключит сборщик мусора сеанса PHP (установив основное значение session.gc_probability до 0), а вместо этого используйте cronjob для удаления файлов сеанса по достижении определенного возраста. Возраст определяется ведущим значением session.gc_maxlifetime.

это означает, что независимо от вашего локального значения 86400 секунд (которое не влияет из-за отключенной сборки мусора сеанса) cronjob удалит файлы сеансов после 1440 считанные секунды.

таким образом, у вас есть 2 варианта:

  1. отключить cronjob (возможно /etc/cron.d/php5) и включите сборщик мусора сеанса PHP, установив session.gc_probability до 1 (in все /etc/php5/*/php.ini файлы).

  2. установите правильное значение master для session.gc_maxlifetime. Твой 1440 секунд. Alter it (in все /etc/php5/*/php.ini files) к наибольшему локальному значению, которое использует любое приложение virtual host / php на сервере (так, по крайней мере 86400 секунд).


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.

или использовать браузер add-on