phpMyAdmin导出大文件失败根源在PHP配置,需同步调大upload_max_filesize、post_max_size、memory_limit和max_execution_time四项,并确认生效的php.ini路径、重启Web服务、检查phpMyAdmin自身配置及zip扩展。

phpMyAdmin 导出大文件失败的根源在 PHP 配置,不是 phpMyAdmin 本身
phpMyAdmin 只是前端界面,实际导出由 PHP 的 ini_set() 和运行时限制控制。百兆(100MB)导出失败,99% 是因为 upload_max_filesize、post_max_size、memory_limit 或 max_execution_time 这几项太小——它们默认值通常只有 2MB–128MB 之间,且互相制约。
必须同时调大的四个 php.ini 参数
只改一个参数没用,PHP 在接收 POST 数据、解析请求、生成导出内容、输出响应时会依次卡在不同环节。以下四项需协同调整:
-
upload_max_filesize = 128M:虽然导出不上传文件,但 phpMyAdmin 的“导出”操作仍走 POST 表单提交(含数据库名、表名、格式等),该值必须 ≥post_max_size -
post_max_size = 128M:phpMyAdmin 提交导出请求时携带大量表结构/数据选项,超限直接返回 413 或空白页 -
memory_limit = 256M:导出百万行时,PHP 需在内存中拼接整个 SQL 字符串或 CSV 内容,128M在 UTF-8 + 多表场景下极易 OOM -
max_execution_time = 300:百兆 SQL 文件生成可能耗时超过默认 30 秒,设为 300(5 分钟)更稳妥;若服务器负载高,可设为0(不限制),但仅限可信内网环境
改完 php.ini 后必须重启 Web 服务,且确认生效位置
常见错误是改了错的 php.ini 文件。执行 php --ini(命令行)或新建 info.php 写 <?php phpinfo(); ?> 访问,重点看 “Loaded Configuration File” 路径。Apache 和 Nginx + PHP-FPM 的配置文件路径通常不同:
- Apache:常在
/etc/php/*/apache2/php.ini(Ubuntu/Debian)或/usr/local/etc/php/php.ini(macOS Homebrew) - PHP-FPM:常在
/etc/php/*/fpm/php.ini,且需重启php-fpm服务,不是只重启 nginx - 改完后务必执行
sudo systemctl restart apache2或sudo systemctl restart php*-fpm nginx,然后刷新phpinfo()页面核对数值是否更新
phpMyAdmin 自身配置也要检查(config.inc.php)
即使 PHP 层放开,phpMyAdmin 也可能主动拦截。打开其配置文件(通常在 /etc/phpmyadmin/config.inc.php 或 phpMyAdmin 安装目录下),检查是否有硬编码限制:
立即学习“PHP免费学习笔记(深入)”;
- 确认没有
$cfg['ExecTimeLimit'] = 0;被注释掉——它控制导出脚本最大执行时间,和max_execution_time是两套机制 - 避免存在
$cfg['UploadDir']或$cfg['SaveDir']指向不可写路径,否则压缩包生成阶段会静默失败 - 如果启用了
Zip导出,确保系统已安装zip扩展:extension=zip.so(Linux)或extension=php_zip.dll(Windows),否则导出到一半报 “Error during zip archive creation”
error_log 里有没有 “Allowed memory size exhausted” 或 “Maximum execution time exceeded”,而不是怀疑 phpMyAdmin 版本。



















