$cfg['UploadDir'] 是 phpMyAdmin 从服务器本地读取 SQL 文件的固定导入目录,非临时上传路径;需在 config.inc.php 中设为相对目录名(如 'upload'),并在根目录创建同名文件夹、配置正确权限与 PHP 运行限制后,导入页才显示“网站服务器上载目录”选项。
phpMyAdmin 的 $cfg['UploadDir'] 是什么?
$cfg['uploaddir'] 不是“临时上传目录”,而是 phpmyadmin 从服务器本地读取 sql 文件的**固定导入目录**。它和 php 的 upload_tmp_dir(真正的临时上传路径)完全无关。用户常误以为设了这个就能绕过 php 上传限制,其实只是让 phpmyadmin 多一个“从服务器磁盘读文件”的入口——文件必须先通过 http 上传成功,才能被这个目录引用。
怎么启用并配置 $cfg['UploadDir']?
启用前必须确保两件事:PHP 已允许上传、且文件已实际传到服务器上(哪怕只是临时中转)。配置步骤如下:
- 编辑 phpMyAdmin 根目录下的
config.inc.php,添加或修改这一行:$cfg['UploadDir'] = 'upload'; - 在 phpMyAdmin 根目录下手动创建同名文件夹(如
upload),并确保 Web 服务器用户(如www-data或apache)有读写权限 - 该目录不能是绝对路径,也不能带斜杠结尾;名称区分大小写,
Upload和upload是不同目录 - 重启 Web 服务(如
systemctl restart nginx或service apache2 restart)后,导入页面才会出现“从服务器上传文件夹中选择”选项
为什么设了 $cfg['UploadDir'] 还是看不到文件?
常见原因不是配置错,而是权限或路径问题:
-
upload目录归属用户不对,比如属 root 但 Web 进程以 www-data 运行 → 执行chown -R www-data:www-data upload - 目录权限太严,Web 进程无法读取 → 至少设为
755(chmod 755 upload) - PHP open_basedir 限制了可访问路径,导致 phpMyAdmin 根本扫描不到该目录 → 检查
php.ini中的open_basedir是否包含 phpMyAdmin 路径 - 文件是用 FTP 上传到
upload目录的,但名字含中文、空格或特殊符号 → phpMyAdmin 只识别 ASCII 文件名,建议重命名为db_backup.sql这类简洁名称
大 SQL 文件导入失败,光配 $cfg['UploadDir'] 不够
即使用了服务器本地导入,仍受 PHP 运行时限制约束:
-
post_max_size必须 ≥ 文件大小(哪怕你跳过 HTTP 上传,phpMyAdmin 内部仍用 POST 请求触发导入) -
max_execution_time = 0或设为足够大值(如600),否则超时中断 -
$cfg['ExecTimeLimit'] = 0必须在config.inc.php中显式设置,否则默认 300 秒仍会终止 - 内存不足时会报
Fatal error: Allowed memory size exhausted→ 对应调高memory_limit(如512M)
真正的大文件(>200MB)建议放弃 phpMyAdmin,改用命令行:mysql -u root -p database_name —— 这条命令不经过 PHP,没那些限制。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











