我在 ubuntu 14.04 上安装了 php5-fpm、nginx、mysql 和 phpmyadmin。一切都很好。当我将 php 更新到 php7.0 时,phpmyadmin 需要安装 mbstring。我安装了它并且运行良好。但是 phpmyadmin 的导出页面显示空白页。
该错误记录在 nginx 错误日志文件中。
2016/08/09 16:20:31 [error] 1494#0: *35 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot 'break' 2 levels in /usr/share/phpmyadmin/export.php on line 864" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "POST /phpmyadmin/export.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "localhost", referrer: "http://localhost/phpmyadmin/index.php?token=584932884866cc16a2444d67eb7927d0&phpMyAdmin=4aro5gojhjuli0svkuctbrlot0450dar"
答案1
我通过修改 phpmyadmin/export.php 中的第 864 行解决了该问题,更改:
break 2;
By:
break;
解决方案由巴伦特在下面的回答:
别担心,这是 phpMyAdmin 团队的代码错误:您进入了一个循环,而不是两个嵌套循环。这就是为什么您不能“break 2”(因为 2 表示您处于嵌套循环中)。出现此错误的原因是 PHP7 比以前的版本更严格。顺便说一句,这可以修复其他软件包(PHPExcel、较新版本的 phpMyAdmin 等)。大多数情况下,开发人员删除了嵌套循环并忘记更新此行代码。
答案2
对我来说,它位于第 604 行,并且有效。非常感谢
if ($GLOBALS[$what . '_structure_or_data'] == 'structure' || $GLOBALS[$what . '_structure_or_data'] == 'structure_and_data') {
if (!PMA_exportStructure($db, $table, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates, 'triggers', $export_type)) {
break;
}