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 團隊的一個程式碼錯誤:您進入的是一個循環,而不是兩個巢狀循環。這就是為什麼你不能「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;
        }

相關內容