空白页是PHP致命错误被静默屏蔽,因display_errors关闭且error_reporting设为0,导致错误不显示;需通过phpinfo验证配置,临时启用错误显示,并修正export.php中非法的break 2语法。
空白页是PHP致命错误被静默屏蔽
phpmyadmin 点击导出后页面变白,不是卡顿也不是加载慢,而是 php 执行中途崩溃且不输出任何提示。根本原因通常是 display_errors 关闭 + error_reporting 被设为 0,导致错误日志写进文件但浏览器看不到。你看到的“什么都没发生”,其实是 php 已经报了错,只是你没看见。
先快速验证:在 phpMyAdmin 同一环境建一个 info.php,内容仅 <?php phpinfo(); ?>,访问它,搜索 display_errors 和 error_reporting。如果值是 Off 或 0,就坐实了问题根源。
临时解法(立即生效):
- 打开 phpMyAdmin 根目录下的 index.php
- 在第一行 <?php 后插入:error_reporting(E_ALL);ini_set('display_errors', '1');
- 保存,刷新导出页——此时错误会直接打在页面上,比如 Fatal error: Cannot 'break' 2 levels 或 Allowed memory size exhausted
常见真凶:export.php 中的 break 2 语法错误
如果你看到的错误明确指向 export.php 某一行的 break 2,别查 PHP 版本或调内存,这是 phpMyAdmin 自身代码残留的逻辑缺陷。新版重构删掉了外层循环,但没同步改掉跳转语句,PHP 直接拒执行。
修复步骤:
- 定位文件:根据报错路径找到 export.php(例如 /www/phpmyadmin/export.php)
- 用编辑器打开,全局搜索 break 2(注意空格和分号,可能写作 break2;、break 2; 或 break 2;)
- 把所有匹配项替换成 break;(只删数字 2,不留空格)
- 保存,无需重启服务,直接重试导出
这个改动不依赖任何配置,也不影响其他功能。改完还报错?说明没搜全,建议用正则 break\s+2 再扫一遍。
大库导出失败常被误判为空白页
导出 >100MB 数据库时,页面“看起来”是空白,实际可能是超时或内存耗尽导致响应中断。它和语法错误不同:前者在 Network 面板里能看到 export.php 返回 504 或 500;后者是直接白屏无请求响应。
立即学习“PHP免费学习笔记(深入)”;
优先检查三项硬限制:
- ExecTimeLimit:在 config.inc.php 中确认是否有 $cfg['ExecTimeLimit'] = 0;(设为 0 表示不限时)
- memory_limit:不是只改 php.ini,还要看 phpMyAdmin 是否自己调用了 ini_set('memory_limit', ...)——搜 vendor_config.php 或 Util.php 文件
- MySQL 权限:执行 SHOW GRANTS FOR CURRENT_USER;,确保含 SELECT 和 LOCK TABLES;缺 FILE 权限会导致导出按钮灰掉或无声失败
别信 Quick 导出模式:它默认只导结构,数据全丢。必须切到 Custom 模式,并手动勾选 “Data” 区域里的 “Export data”。
导出中断后文件是否完整只能靠肉眼验证
phpMyAdmin 导出过程一旦中断(比如超时、内存溢出),它不会报错,也不会截断提示,只会给你一个开头完整、结尾缺失的 SQL 文件——你导入时才会发现最后一张表没建,或者最后一个 INSERT 半截没了。
导出完成后,立刻做三件事:
- 用文本编辑器打开 .sql 文件,拉到底部看有没有以 COMMIT; 或 UNLOCK TABLES; 结尾
- 搜索 CREATE TABLE 出现次数,是否等于你数据库里的表数量
- 搜索 INSERT INTO `xxx`,确认至少有一条非空数据行(避免只导出了结构)
只要文件末尾不是干净的语句结束,就别急着删原库——它大概率是残缺的。真正可靠的大库导出,始终优先用命令行 mysqldump,phpMyAdmin 只适合中小规模应急。



















