![php5更新到php7.0後,phpmyadmin的匯出頁變成空白](https://rvso.com/image/1502885/php5%E6%9B%B4%E6%96%B0%E5%88%B0php7.0%E5%BE%8C%EF%BC%8Cphpmyadmin%E7%9A%84%E5%8C%AF%E5%87%BA%E9%A0%81%E8%AE%8A%E6%88%90%E7%A9%BA%E7%99%BD.png)
我在 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;
}