ubuntu 18.04下安装好 mysql5.7, php7.2及 phpmyadmin 4.6.6并配置好用户名和密码以后,进入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, boolean true, string 'information_schema', string 'character_sets', null, null, null, null, null, null, string '', string './themes/pmahomme/img/', null, null, null, string 'select * from `character_sets`', null, null, ) ./sql.php#221: pma_executequeryandsendqueryresponse( array, boolean true, string 'information_schema', string 'character_sets', null, null, null, null, null, null, string '', string './themes/pmahomme/img/', null, null, null, string 'select * from `character_sets`', null, null, ) ./index.php#53: include(./sql.php)
搜索了一下,发现了好多人都遇到了同样的问题,原因可能是phpmyadmin4.6.6和php7.2不完全兼容引起的。
phpmyadmin新版本4.8以上应该解决了这个问题,不过现在还没法通过apt升级,需要自己手动升级。
stackoverflow上有网友给出了修改/usr/share/phpmyadmin/libraries/sql.lib.php文件的解决方法:
最高票答案是修改第614行,把
&& ($analyzed_sql_results['select_expr'][0] == '*')))
修改成:
&& ($analyzed_sql_results['select_expr'][0] == '*'))
这样修改后,原来的报错没有了,不过又报错500 internal server error,还是有问题。
另外一个答案,是修改/usr/share/phpmyadmin/libraries/sql.lib.php第613行,把
|| (count($analyzed_sql_results['select_expr'] == 1)
修改成
|| ((count($analyzed_sql_results['select_expr']) == 1)
这个方法完美解决了问题。