登錄 phpMyAdmin 提示:
phpMyAdmin 錯誤:無法在發生錯誤時創建會話,請檢查 PHP 或網站服務器日志,並正確配置 PHP 安裝。
PHP Session 文件殘留導致衝突。常見觸發場景:
# WDCP 面板環境
cd /www/wdlinux/tmp
rm -f sess_*
# 通用 PHP 環境(根據 php.ini session.save_path 確定)
cd /tmp
rm -f sess_*
# 或指定 PHP 安裝目錄
cd /usr/local/php/tmp
rm -f sess_*
清理後刷新頁面即可正常登錄。
phpMyAdmin 相關 Cookie
# 確認 session.save_path
php -i | grep session.save_path
# 修復權限(假設為 /var/lib/php/session)
chown -R www:www /var/lib/php/session
chmod 770 /var/lib/php/session
# 或根據 PHP-FPM 運行用戶調整
編輯 config.inc.php:
$cfg['LoginCookieValidity'] = 3600; // 1小時自動過期
$cfg['LoginCookieStore'] = 0; // 不在瀏覽器存儲
$cfg['LogoutRedirectUrl'] = 'index.php'; // 登出跳轉首頁
; php.ini
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.save_handler = files
session.save_path = "/var/lib/php/session" # 專用目錄,非 /tmp
; php.ini 或 php-fpm pool
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=your_password"
# 或
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
優勢:多節點共享、自動過期清理、性能更高、避免文件系統 inode 耗盡。
| 檢查項 | 命令/操作 | 正常標準 |
|---|---|---|
| Session 目錄存在 | ls -ld /var/lib/php/session | 目錄存在、屬主 www:www、權限 770 |
| 磁盤空間 | df -h /var/lib/php/session | 使用率 < 80% |
| Inode 使用 | df -i /var/lib/php/session | 使用率 < 80% |
| PHP 進程可寫 | sudo -u www touch /var/lib/php/session/test && rm $_ | 無報錯 |
| session.save_path 配置 | php -i | grep session.save_path | 指向正確目錄 |
「無法創建會話」本質是 Session 文件衝突或存儲異常。清理 sess_* 文件可秒級恢復,配合 Session 存儲遷移至 Redis、優化 GC 策略、規範登出流程,可徹底杜絕復發。生產環境強烈建議棄用文件存儲,轉向分布式 Session 方案。