Ubuntu18.04 の phpmyadmin のエラーを直す



Warning in ./libraries/sql.lib.php#613
 count(): Parameter must be an array or an object that implements Countable

Backtrace

./libraries/sql.lib.php#2128: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#2079: PMA_executeQueryAndGetQueryResponse(
array,
・・・・・・

環境

  • Ubuntu 18.04
  • phpMyAdmin 4.6.6 documentation
  • MariaDB mysql Ver 15.1 Distrib 10.1.44-MariaDB,
  • PHP 7.2

上記全てディストリビューションの標準パッケージでインストールしています。

解決方法の選択

この問題は、4.7.4の phpmyadmin で対応できているらしいです。
https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/

最新の公式パッケージをインストールするなどの方法もありますが、
今回は、インストールされている php スクリプトを書き換えることで対応します。

書き換え方法

以下を元にして対応しました。


vim /usr/share/phpmyadmin/libraries/sql.lib.php

613行目近辺


function PMA_isRememberSortingOrder($analyzed_sql_results)
{
    return $GLOBALS['cfg']['RememberSorting']
        && ! ($analyzed_sql_results['is_count']
            || $analyzed_sql_results['is_export']
            || $analyzed_sql_results['is_func']
            || $analyzed_sql_results['is_analyse'])
        && $analyzed_sql_results['select_from']
        && ((empty($analyzed_sql_results['select_expr']))
            || (count($analyzed_sql_results['select_expr'] == 1)
                && ($analyzed_sql_results['select_expr'][0] == '*')))
        && count($analyzed_sql_results['select_tables']) == 1;
}

の、


            || (count($analyzed_sql_results['select_expr'] == 1)

            || ((count($analyzed_sql_results['select_expr']) == 1)

に直して解決します。

ここの count 関数が括弧で閉じてないのが原因だそうです。