phpmyadmin 不提供一键清理临时文件功能,需手动定位并精准清理 tmp 目录下 export.zip、import.sql、tbl_.php、sql.php 等文件,保留 sess* 并按时间筛选删除,同时检查权限、web 配置暴露风险及残留数据库账号。
phpmyadmin 本身不提供“一键清理临时文件”的界面功能,所有 tmp 目录下的残留必须手动干预——这不是遗漏功能,而是设计使然:它把临时文件生命周期完全交由运维控制,避免自动清理引发权限或并发问题。
确认 phpMyAdmin 的 tmp 目录真实路径
别直接删 /usr/share/phpmyadmin/tmp,先验证是否被改过。常见情况包括:
- 宝塔面板可能映射到
/www/server/phpmyadmin/tmp - Nginx/Apache 配置中通过
alias或Alias指向了其他路径 - phpMyAdmin 配置文件
config.inc.php里设置了$cfg['TempDir'],值可能是'/tmp/phpmyadmin'或绝对路径
执行以下命令定位:
grep -r "TempDir" /usr/share/phpmyadmin/config.inc.php 2>/dev/null || echo "未找到自定义配置,使用默认路径"
若没结果,再查 Web 服务实际生效路径:
ps aux | grep -E "(nginx|apache|httpd)" | grep -v grep
结合进程工作目录和配置文件,交叉确认真实 tmp 路径。
只删明确属于 phpMyAdmin 的临时文件类型
盲目 rm -rf 整个目录会破坏 session 写入权限、残留 import/export 文件、甚至误删其他 PHP 应用的缓存。应按前缀精准清理:
-
export_*.zip:导出大表后生成,下载完成也不自动删除 -
import_*.sql:导入失败时残留,单个可达百 MB -
tbl_*.php或sql_*.php:SQL 执行缓存,尤其在“显示查询”或“格式化 SQL”后生成 -
sess_*:session 文件,但注意:若权限为root:root,清完后需chown www-data:www-data(或对应 Web 用户)再chmod 700
推荐命令(替换 /path/to/tmp 为真实路径):
find /path/to/tmp -maxdepth 1 \( -name "export_*.zip" -o -name "import_*.sql" -o -name "tbl_*.php" -o -name "sql_*.php" \) -delete
session 文件建议单独处理:find /path/to/tmp -maxdepth 1 -name "sess_*" -mmin +60 -delete(仅删 60 分钟以上未访问的)。
别漏掉与 phpMyAdmin 共享的底层临时路径
phpMyAdmin 运行在 PHP 环境中,它的临时行为会和系统级、框架级缓存路径重叠:
-
/tmp/opcache/:若启用opcache.file_cache,PHP 重启不自动清,需手动rm -rf /tmp/opcache/* -
~/.composer/cache/:宝塔等一键脚本常以 root 运行 composer,composer clear-cache不自动触发,du -sh ~/.composer/cache/files经常占数 GB -
/var/lib/php/sessions/:若 phpMyAdmin 未显式设TempDir,可能复用系统 session 目录,这里混着其他 PHP 应用的 sess_ 文件,不能全删
清理前先看占用:du -sh /tmp/* 2>/dev/null | sort -hr | head -5,聚焦真正吃空间的子目录。
清理后必须检查的三件事
删完不是结束,以下三点任一缺失,下次就可能 500 或权限报错:
- Web 服务用户(如
www-data)对 tmp 目录必须有rwx权限,且属主正确:chown www-data:www-data /path/to/tmp && chmod 700 /path/to/tmp - 确认 Nginx/Apache 配置里没有把该 tmp 路径暴露成可公开访问的 location(例如
location /tmp { ... }),否则等于把缓存目录挂公网 - MySQL 中残留的
phpmyadmin@%账号若仍有SELECT ON mysql.*权限,就是提权入口,应执行DROP USER 'phpmyadmin'@'%';
真正危险的从来不是磁盘满,而是你删了 export_*.zip 却忘了 phpmyadmin@% 还能读 mysql.user 表——临时文件只是表象,权限和暴露面才是根因。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











