首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

徹底解決 phpMyAdmin 登入逾時問題:修改 LoginCookieValidity 完整指南

     編輯:PHP 相關知識

問題現象

phpMyAdmin 預設 1440 秒(24 分鐘)無操作自動登出,頻繁重新登入嚴重影響開發效率:

「登入逾時(1440 秒無活動),請重新登入」

根本原因

phpMyAdmin 使用獨立的 Cookie 有效期設定 $cfg['LoginCookieValidity'],預設 1440 秒,且受限於 PHP 的 session.gc_maxlifetime。

解決方案:兩步驟修改

步驟 1:修改 phpMyAdmin 設定檔

# 檔案位置:phpMyAdmin/libraries/config.default.php
# 找到第 ~行
$cfg['LoginCookieValidity'] = 1440;

# 修改為想要的秒數(例:8 小時 = 28800 秒)
$cfg['LoginCookieValidity'] = 28800;

注意:請修改 config.default.php 而非 config.inc.php,後者會被前者覆蓋(除非你已正確建立 config.inc.php)。

步驟 2:同步調整 PHP session.gc_maxlifetime

# php.ini
session.gc_maxlifetime = 28800  ; 必須 ≥ LoginCookieValidity

# 重啟 Web 伺服器生效
sudo systemctl restart php-fpm  # 或 apache2 / nginx

關鍵約束關係

鐵律: LoginCookieValidity ≤ session.gc_maxlifetime

若前者大於後者,phpMyAdmin 會顯示警告並以較小值為準:

「您的 PHP 設定 session.gc_maxlifetime 短於 phpMyAdmin 設定的 Cookie 有效期,登入會話將比設定時間更早失效。」

進階:同時延長 Cookie 存活時間

若需跨瀏覽器關閉保持登入,須同時設定:

# phpMyAdmin config.default.php
$cfg['LoginCookieStore'] = 0;        // 0=瀏覽器關閉即失效, 1=永久儲存
$cfg['LoginCookieDeleteAll'] = true; // 登出時刪除所有 Cookie

# php.ini (若使用 Cookie 型 session)
session.cookie_lifetime = 28800  # 0=session cookie, >0 持久秒數

驗證修改生效

  1. 重啟 PHP-FPM / Apache
  2. 清除瀏覽器 phpMyAdmin 相關 Cookie
  3. 重新登入 phpMyAdmin
  4. 閒置超過原 24 分鐘(如 30 分鐘)確認未自動登出

安全性考量與最佳實踐

替代方案:config.inc.php 覆蓋法(推薦)

避免修改原始檔案,建立/編輯 config.inc.php:

<?php
// phpMyAdmin/config.inc.php
$cfg['LoginCookieValidity'] = 28800;
$cfg['LoginCookieStore'] = 0;
// ... 其他自訂設定
?>

優點:版本升級不會覆蓋、納入版控、環境區隔更清晰。

常見問題排查

環境建議時長備註
本機開發8-24 小時 (28800-86400)便利優先
內網測試4-8 小時平衡便利與安全
生產/跳板機30-60 分鐘嚴格限制,配合 VPN/堡壘機
現象原因解決
修改後無效未重啟 PHP / OpCache 快取重啟 php-fpm、清除 OpCache
仍在 24 分鐘登出session.gc_maxlifetime 未同步調大檢查 php.ini 生效值:phpinfo()
跨分頁登出session.cookie_path / domain 不一致設定 session.cookie_path=/
警告訊息持續出現LoginCookieValidity > gc_maxlifetime調大 gc_maxlifetime 至同值或更大

phpMyAdmin 逾時問題本質是「雙重 Session 機制」未對齊。只要記住 LoginCookieValidity ≤ session.gc_maxlifetime 這一條鐵律,並養成修改 config.inc.php 而非核心檔案的習慣,即可一勞永逸解決困擾開發者多年的登出煩惱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved