phpMyAdmin-не может изменить время окончания сеанса
Я знаю, что этот вопрос задавался много раз на сайте SO. Тем не менее, я прочитал это, это, это, это, это и это, и многое другое. Ни один из них не сработал. Я также пытался изменить расположение файлов сеанса и другие вещи, которые я сейчас не помню.
Мои настройки:
Один: файл 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
Три: phpinfo.php
файл из корня phpMyAdmin показывает:
Четыре: сервер (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 варианты:
Отключите cronjob (вероятно,
/etc/cron.d/php5
) и включите сборщик мусора сессии PHP, установивsession.gc_probability
в1
(в all/etc/php5/*/php.ini
файлы).Установите правильное главное значение для
session.gc_maxlifetime
. Ваш - 1440 секунд. Alter it (in all/etc/php5/*/php.ini
файлы) до наибольшего локального значения, которое использует любое приложение виртуального хоста / 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.
Или используйте надстройку браузера
- Firefox Phpmyadmin Timeout Preveneter