phpMyAdmin 預設 1440 秒(24 分鐘)無操作自動登出,頻繁重新登入嚴重影響開發效率:
「登入逾時(1440 秒無活動),請重新登入」
phpMyAdmin 使用獨立的 Cookie 有效期設定 $cfg['LoginCookieValidity'],預設 1440 秒,且受限於 PHP 的 session.gc_maxlifetime。
# 檔案位置:phpMyAdmin/libraries/config.default.php
# 找到第 ~行
$cfg['LoginCookieValidity'] = 1440;
# 修改為想要的秒數(例:8 小時 = 28800 秒)
$cfg['LoginCookieValidity'] = 28800;
注意:請修改 config.default.php 而非 config.inc.php,後者會被前者覆蓋(除非你已正確建立 config.inc.php)。
# 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 有效期,登入會話將比設定時間更早失效。」
若需跨瀏覽器關閉保持登入,須同時設定:
# 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 持久秒數
| 環境 | 建議時長 | 備註 |
|---|---|---|
| 本機開發 | 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而非核心檔案的習慣,即可一勞永逸解決困擾開發者多年的登出煩惱。