phpMyAdmin 报错Warning in ./libraries/sql.lib.php#613

大伟哥 提交于 2019-07-25,周四, 19:00

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)

这个方法完美解决了问题。

文章分类

标签

添加新评论

此字段内容将保密,不会被其他人看见。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。