根本原因是PHP的session.gc_maxlifetime与phpMyAdmin的$cfg['LoginCookieValidity']值不匹配且未同步修改,二者必须同时调大并确保后者≤前者,否则以较小值为准导致1440秒自动退出。

phpMyAdmin登录后1440秒自动退出,根本原因是两个配置不匹配
默认的1440秒(24分钟)超时不是phpMyAdmin自己硬编码的,而是它在启动会话时,同时受PHP底层session机制和自身配置双重约束的结果。只要session.gc_maxlifetime和$cfg['LoginCookieValidity']中任意一个值更小,最终生效的就是那个小值。
常见错误现象包括:修改了$cfg['LoginCookieValidity']却没生效;或者改完后页面提示“您的 PHP 配置参数 session.gc_maxlifetime 短于您在 phpMyAdmin 中设置的 Cookies 有效期”——这说明你只动了一边。
必须同步修改php.ini里的session.gc_maxlifetime
这个值决定了PHP服务器端会话数据最多保留多久,单位是秒。如果设为1800(30分钟),但没重启服务,phpMyAdmin照样读不到新值。
- 用
php --ini或phpinfo()确认当前生效的php.ini路径,常见位置如/etc/php/8.2/apache2/php.ini(Ubuntu/Debian)或/etc/php.ini(CentOS/RHEL) - 搜索并修改
session.gc_maxlifetime = 1440,比如改为session.gc_maxlifetime = 7200(2小时) - 同时检查
session.cookie_lifetime:若希望浏览器关掉也不立即失效,就设成同值;若希望关浏览器即失效,保持为0 - 改完必须重启Web服务:
sudo systemctl restart apache2或sudo systemctl restart php-fpm(取决于你的PHP运行模式)
再改phpMyAdmin的$cfg['LoginCookieValidity']
这个值控制登录Cookie本身的有效期,它必须≤session.gc_maxlifetime,否则phpMyAdmin会在登录页直接报错并降级使用更短的时限。
立即学习“PHP免费学习笔记(深入)”;
- 找到
phpMyAdmin/libraries/config.default.php(注意:不是config.inc.php) - 定位到
$cfg['LoginCookieValidity'] = 1440;,改成相同或更小的值,例如$cfg['LoginCookieValidity'] = 7200; - 如果你用的是宝塔面板或Docker部署,注意该文件可能被映射到宿主机某个路径,别改错了位置
- 无需重启服务,但要清空浏览器Cookie或换无痕窗口测试,避免旧Cookie干扰
为什么不能只靠ini_set()临时改?
phpMyAdmin的入口脚本(如index.php)在调用session_start()前,并不会执行用户自定义的ini_set()逻辑。它的会话初始化走的是内部封装流程,绕过了普通PHP脚本的控制点。
所以你在config.inc.php里加ini_set('session.gc_maxlifetime', 7200)是无效的;在自定义PHP页面里能用,但在phpMyAdmin上下文中不适用。
真正容易被忽略的是:某些云环境(如宝塔)或容器化部署中,php.ini可能有多个副本(CLI版、FPM版、Apache版),必须确认你改的是Web请求实际加载的那个版本。用phpinfo()页面里的“Loaded Configuration File”字段为准。



















