我已经上传了备份到一个表,打开表我看到这个:

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

Backtrace

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'alternativegirls',
string 'tgp_photo',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `tgp_photo`',
NULL,
NULL,
)
./sql.php#216: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'alternativegirls',
string 'tgp_photo',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `tgp_photo`',
NULL,
NULL,
)
./index.php#53: include(./sql.php)

在phpMyAdmin……

PHP是7.2,服务器是Ubuntu 16.04,昨天安装的。

我看到一些人在他们的代码中有这个错误,但我没有发现任何人在phpMyAdmin中收到它…

我该怎么办?这是我的错误吗?phpmyadmin错误?等待更新?回到PHP 7.1?


当前回答

编辑文件:/usr/share/phpmyadmin/libraries/sql.lib.php

替换:(count($analyzed_sql_results['select_expr'] == 1)

With: (count($analyzed_sql_results['select_expr']) == 1

这对我很有效

其他回答

来看看:https://devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/

首先,在编辑之前备份sql.lib.php。 在nano中编辑sql.lib.php。

$ sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

按CTRL + W搜索(count($analyzed_sql_results['select_expr'] == 1)

将其替换为((count($analyzed_sql_results['select_expr']) == 1)

保存文件并退出。(按CTRL + X,按Y,然后按ENTER)

以提升的权限打开/usr/share/phpmyadmin/sql.lib.php文件,并在函数PMA_isRememberSortingOrder()中编辑以下内容:

~第613行修复初始错误: 替换|| count($analyzed_sql_results['select_expr'] == 1) || (count($analyzed_sql_results['select_expr']) == 1) ~第614行来修复接下来可能出现的500错误: 替换& & ($ analyzed_sql_results [' select_expr '] [0 ] == '*'))) & & (analyzed_sql_results美元[' select_expr '] [0 ] == '*'))

重启Apache服务器:sudo service apache2 Restart。

在基于Ubuntu 18.04的Linux Mint 19.1上测试,使用PhpMyAdmin 4.6.6和PHP 7.2。

对于我的phpmyadmin版本(4.6.6deb5),我找到了第613行,并意识到count()括号没有正确关闭。要在下次发布之前暂时修复这个问题,只需更改:

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

to:

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

这在PHPMyAdmin的后续版本中得到了修复。Ubuntu 18.04.2的Ubuntu软件库的版本是4.6.6.5,而它们目前的版本是4.9.0.1。更新PHPMyAdmin安装可以解决这个问题,但是可能比仅仅编辑一行代码风险更大。下面是我在我的Ubuntu服务器上是怎么做的。对于所有操作系统,步骤本质上是相同的(只是路径不同)。

下载PHPMyAdmin。

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
unzip phpMyAdmin-4.9.0.1-all-languages.zip

备份旧的PHPMyAdmin安装。

cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup

在旧的PHPMyAdmin上删除新的PHPMyAdmin

cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

验证它是否有效。如果没有,那么……您有备份,因此恢复它并手动编辑故障行。根据我个人的经验,我发现4.6.6.5版本不仅漏洞百出,而且与新的4.9.0.1相比速度也慢得令人难以置信。对于我认为是“WordPress”质量的东西来说,速度的提高是纯粹的魔法。

替换功能:

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;
}