最可靠方法是直接改PHP配置或用mysqldump;upload_max_filesize仅限制导入上传,对导出无效;导出瓶颈在于max_execution_time超时、memory_limit内存溢出和output_buffering不当,需三者协同调整,或优先使用mysqldump绕过所有PHP限制。
直接改 php 配置或用 mysqldump 是最可靠的办法,靠调 phpmyadmin 界面设置基本无效。
为什么改 php.ini 的 upload_max_filesize 没用?
导出不是上传,upload_max_filesize 控的是「导入」时的文件上传限制,对导出完全不生效。导出卡住的真正瓶颈是:
-
max_execution_time:导出大库时脚本超时(默认 30 秒),页面直接中断 -
memory_limit:PHP 尝试把整个 SQL 内容拼成字符串再输出,内存爆掉就白屏 -
output_buffering:关掉或设太小,大导出会触发 HTTP 连接重置
必须同时调这三项,例如:
max_execution_time = 600 memory_limit = 512M output_buffering = 4096
用 mysqldump 绕过所有限制
这是生产环境首选,不走 PHP、不占 Web 资源、可控性强:
- 导出单库:
mysqldump -u root -p database_name > backup.sql - 压缩导出:
mysqldump -u root -p database_name | gzip > backup.sql.gz - 跳过某些表(比如日志表):
mysqldump -u root -p --ignore-table=database_name.log_table database_name > backup.sql
注意:mysqldump 默认不锁表,高并发写入时可能产生不一致;加 --single-transaction 可保证一致性(仅对 InnoDB 有效)。
立即学习“PHP免费学习笔记(深入)”;
$cfg['SaveDir'] 导出到服务器本地目录
改 phpMyAdmin 配置让导出结果直接写进服务器磁盘,避开浏览器传输和内存组装:
- 在
config.inc.php中设置:$cfg['SaveDir'] = 'save'; - 确保 phpMyAdmin 目录下存在可写的
save/子目录(权限 755,属主为 web 服务用户) - 导出时勾选「保存于服务器的 /save 目录」,文件生成后用 FTP 或 SSH 下载
这个方法不依赖 PHP 执行时间或内存,但要求你有服务器文件系统写入权限 —— 共享主机通常禁用,宝塔或 VPS 环境可用。
真正的大库(>500MB)别硬扛 phpMyAdmin,它本质是个调试工具,不是备份引擎。导出路径优先级应该是:mysqldump > $cfg['SaveDir'] > 改 PHP 参数。最后那个选项,只适合临时救急,且极易因内存或超时失败。



















