php5 から php7.0 にアップデートすると、phpmyadmin のエクスポート ページが空白になる

php5 から php7.0 にアップデートすると、phpmyadmin のエクスポート ページが空白になる

私の 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 チームのコード ミスです。ループは 1 つで、ネストされたループは 2 つではありません。そのため、「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;
        }

関連情報