“路径不存在”实为 upload_max_filesize 限制导致文件未上传成功;需同步调大 upload_max_filesize、post_max_size 等参数并重启服务,或改用 mysql 命令行导入。

phpMyAdmin 提示“路径不存在”其实是 upload_max_filesize 限制了文件上传
Mac 上用 MAMP、XAMPP 或 Homebrew 安装的 phpMyAdmin,导入大 SQL 文件时显示 路径不存在,这根本不是路径配置问题,而是 PHP 拒绝上传——upload_max_filesize 或 post_max_size 太小,导致文件根本没传到服务器,phpMyAdmin 就拿不到临时文件,于是报这个含糊其辞的错误。
- 真实错误日志通常在
/usr/local/var/log/php/error.log(Homebrew)或/Applications/MAMP/logs/php_error.log里,会看到File upload error - unable to create a temporary file或直接提示exceeds upload_max_filesize - phpMyAdmin 的
$cfg['UploadDir']和$cfg['SaveDir']是用于「从服务器本地读取 SQL 文件」的高级功能,和「网页表单上传」无关,改它们对解决该提示无效 - Mac 下 PHP 配置文件位置不统一:MAMP 用
/Applications/MAMP/bin/php/php{version}/conf/php.ini;Homebrew 默认是/usr/local/etc/php/{version}/php.ini;系统自带 PHP(不推荐)在/etc/php.ini(需先复制模板)
修改 upload_max_filesize 和 post_max_size 的实操步骤
改完必须重启 Web 服务,否则无效。别只改一个,两个值要匹配:
-
upload_max_filesize = 128M(建议设为你要导入文件大小的 1.5 倍) -
post_max_size = 128M(必须 ≥upload_max_filesize,否则 POST 数据体直接被截断) -
max_execution_time = 300(大 SQL 执行久,避免超时中断) -
memory_limit = 512M(phpMyAdmin 解析大 SQL 时吃内存,256M 有时不够) - 改完后运行
php -i | grep "Loaded Configuration File"确认生效的是哪个php.ini;再用php -r "echo ini_get('upload_max_filesize');"验证值已更新
Mac 下重启服务的常见方式
不同环境命令不同,错一条就白改:
- MAMP:点界面左上角 Stop Servers → 再点 Start Servers;不要只点刷新按钮
- Homebrew + nginx + php-fpm:
brew services restart nginx和brew services restart php(注意 php 服务名可能是php@8.2) - Homebrew + Apache:
brew services restart httpd - 改完后访问
http://localhost/phpmyadmin/import.php页面底部,看「最大上传文件大小」是否已变成你设的值(如 128 MiB)
实在导不进去?绕过 phpMyAdmin 直接用命令行
这是最稳的方案,尤其对 >100MB 的 SQL 文件:
立即学习“PHP免费学习笔记(深入)”;
- 终端执行:
mysql -u root -p database_name - 如果提示
ERROR 2002 (HY000):说明 MySQL socket 路径不对,加--socket=/tmp/mysql.sock(MAMP 是/Applications/MAMP/tmp/mysql/mysql.sock) - 导入前确保数据库已创建:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" - 如果 SQL 文件含
CREATE DATABASE,去掉它再导入,或用mysql -u root -p (不指定库名)
Mac 上的权限模型和 PHP 配置耦合紧密,路径不存在 这个提示极具误导性——它背后大概率是 PHP 层的上传拦截,而不是文件系统找不到目录。改配置、重启服务、验证生效,三步缺一不可;一旦卡在某步,直接切命令行导入,反而省时间。



















