web-dev-qa-db-ja.com

php5をphp7.0に更新すると、phpmyadminのエクスポートページが空白になります

私のubuntu14.04にインストールされているphp5-fpm、nginx、mysql、phpmyadminがありました。すべてが良かった。 phpをphp7.0に更新したとき、mbstringをインストールするためにphpmyadminが必要でした。私はそれをインストールし、うまく機能します。しかし、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
Ali

Phpmyadmin/export.phpの864行目を変更して問題を解決しました。変更:

break 2;

By:

break;

次のbbalentによって提供されるソリューション answer

心配しないでください。これはphpMyAdminチームのコードミスです。2つのネストされたループではなく、1つのループになっています。これが、「2を壊す」ことができない理由です(2は、ネストされたループ内にいることを示しているため)。 PHP7は以前のバージョンよりも厳格であるため、エラーが表示されます。ちなみに、これで他のパッケージ(PHPExcel、新しいバージョンのphpMyAdminなど)を修正できます。ほとんどの場合、開発者はネストされたループを削除し、このコード行を更新するのを忘れていました。

1
Ali

私にとっては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;
        }
0
user873009