587

我已将备份上传到表中,打开表我看到:

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?

4

40 回答 40

1128

/usr/share/phpmyadmin/libraries/sql.lib.php使用以下命令编辑文件:

sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

在第613行,count 函数的计算结果始终为 true,因为 之后没有右括号$analyzed_sql_results['select_expr']。进行以下替换可以解决此问题,然后您需要删除第614行的最后一个右括号,因为它现在是一个额外的括号。

代替:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))

和:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr']) == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*'))

重启服务器apache:

sudo service apache2 restart
于 2018-03-26T03:59:25.623 回答
668

最简单的方法:

只需在终端的命令行下面运行它,然后返回到 PhpMyAdmin。

sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

手动方法:

打开sql.lib.php文件

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

查找count($analyzed_sql_results['select_expr']文件中的代码。你可以在第 ~ 613行得到这个。您可以在下面看到错误的代码

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

只需用下面的代码替换错误的代码

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

保存文件并来到PhpMyAdmin

于 2018-05-25T19:57:10.867 回答
112

在 sql.lib.php 中发现了这个 PHP 7.2 count() - SYNTAX error

这完全适用于我的配置:

Debian 9, 
PHP 7.2.3-1+0~20180306120016.19+stretch~1.gbp81bf3b (cli) (built: Mar  6 2018 12:00:19) ( NTS )

打开 /usr/share/phpmyadmin/libraries/sql.lib.php

换行:在==之前移动括号

|| ( (计数($analyzed_sql_results['select_expr'] ) == 1) && ($analyzed_sql_results['select_expr'][0] == '*')))

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;
 }
于 2018-03-24T10:28:27.593 回答
73

在 Debian 上测试,应该可以在 Ubuntu 上运行:

1.) 首先下载最新的 phpMyadmin 文件。

2.)删除(备份)位于/usr/share/phpmyadmin目录中的所有先前版本文件。

3.) 解压到/usr/share/phpmyadmin/最新 phpmyadmin 的所有文件目录。

4.)修改文件libraries/vendor_config.php并更改行:

define('CONFIG_DIR', '');

define('CONFIG_DIR', '/etc/phpmyadmin/');

define('TEMP_DIR', './tmp/');

define('TEMP_DIR', '/tmp/');

5.)重新启动apache服务器并完成。

于 2018-02-08T10:12:20.360 回答
42

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

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

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

这对我有用

于 2018-06-04T04:46:13.747 回答
35

如果有人在 DB 导出页面中有类似的错误(我在 Ubuntu 18.04 中遇到了这个问题),则将文件中的第 551 行替换/usr/share/phpmyadmin/libraries/plugin_interface.lib.php为代码

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {
于 2018-06-28T10:08:20.540 回答
34
Works on UBUNTU 18.04 


Edit file: '/usr/share/phpmyadmin/libraries/sql.lib.php'
Replace: (count($analyzed_sql_results['select_expr'] == 1)
With:  ((count($analyzed_sql_results['select_expr']) == 1)

Restart the server
sudo service apache2 restart
于 2018-11-05T12:22:50.063 回答
29

phpmyadmin 4.7.4 应该有“修复了几个与 PHP 7.2 的兼容性问题”

您可能有旧版本的 phpmyadmin。

https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/

于 2017-12-29T22:59:56.393 回答
25

Ubuntu 18.04 LTS

这些是对我有用的步骤。非常感谢 William Desportes 在他们的 Ubuntu PPA 上提供自动更新。

第 1 步来自 William Desportes 的帖子
$sudo add-apt-repository ppa:phpmyadmin/ppa

第 2 步
$sudo apt-get --with-new-pkgs upgrade

第 3 步
$sudo service mysql restart

如果重启mysql有问题,也可以按以下顺序 重启
$$sudo service mysql stop;
sudo service mysql start;

于 2020-01-18T03:43:53.387 回答
24

在 ubuntu-18.04 执行以下步骤:

步骤 1)定位sql.lib.php

它将显示如下内容:

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

步骤 2)打开终端 (Alt t) 并写入:

sudo /usr/sbin/pma-configure

步骤3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php 并搜索以下功能:

 

    函数 PMA_isRememberSortingOrder($analyzed_sql_results)
     {
        返回 $GLOBALS['cfg']['RememberSorting']
            && !($analyzed_sql_results['is_count']
                || $analyzed_sql_results['is_export']
                || $analyzed_sql_results['is_func']
                || $analyzed_sql_results['is_analysis'])
            && $analyzed_sql_results['select_from']
            && ((空($analyzed_sql_results['select_expr']))
                || (计数($analyzed_sql_results['select_expr'] == 1)
                    && ($analyzed_sql_results['select_expr'][0] == '*')))
            && count($analyzed_sql_results['select_tables']) == 1;
     }

步骤 4)将上述函数替换为:

     函数 PMA_isRememberSortingOrder($analyzed_sql_results)
     {
        返回 $GLOBALS['cfg']['RememberSorting']
            && !($analyzed_sql_results['is_count']
                || $analyzed_sql_results['is_export']
                || $analyzed_sql_results['is_func']
                || $analyzed_sql_results['is_analysis'])
            && $analyzed_sql_results['select_from']
            && ((空($analyzed_sql_results['select_expr']))
                || (计数($analyzed_sql_results['select_expr']) == 1)
                    && ($analyzed_sql_results['select_expr'][0] == '*'))
            && count($analyzed_sql_results['select_tables']) == 1;
     }

步骤 4)在终端上保存并关闭文件和以下命令

sudo /usr/sbin/pma-secure

步骤 5) sudo service mysql reload

步骤 6) sudo service apache2 reload

它对我有用.. 祝你好运

于 2018-06-15T10:46:17.583 回答
23

打开这个文件:'/usr/share/phpmyadmin/libraries/sql.lib.php'

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

按 ctrl+w 搜索 (count($analyzed_sql_results['select_expr'] == 1)

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

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

重启服务器

 sudo service apache2 restart

此外,如果您仍然面临同样的问题,请执行以下操作。

打开这个文件 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

查找: if ($options != null && count($options) > 0) {

Ctrl+w : if ($options != null && count($options) > 0) {

替换为以下代码

if ($options != null && count((array)$options) > 0) {

现在保存并重新启动服务器

sudo /etc/init.d/apache2 restart
于 2019-01-31T05:49:03.007 回答
21

我认为最好的选择是将 Phpmyadmin 更新到已经修复的版本。

在它作为 deb 发布之前,您可以像在@crimson-501 回答中那样做,我将在下面复制:

  • 您的第一步是从官方 Ubuntu 存储库安装 PMA (phpMyAdmin) apt-get install phpmyadmin:.
  • 接下来,cd 进入 usr/share 目录:cd /usr/share.
  • 三、删除phpmyadmin目录:rm -rf phpmyadmin.
  • 现在我们需要将最新的 PMA 版本下载到我们的系统上(注意,您需要 wget: apt-get install wget):wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" 让我解释一下这个命令的参数,-P 定义路径,“link.zip”当前是(7/17/18 ) 最新版本的 PMA。你可以在这里找到这些链接。
  • 对于下一步,您需要解压缩 ( apt-get install unzip): unzip phpMyAdmin-4.9.4-english.zip。我们刚刚解压缩了 PMA,现在我们将把它移到它的最终位置。
  • 让我们使用cp(复制)命令来移动我们的文件!请注意,我们必须添加-r参数,因为这是一个文件夹。cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • 现在是时候清理了:rm -rf phpMyAdmin-4.9.4-english.

继续阅读!

登录 PMA 后,您现在可能会注意到两个错误。

the configuration file now needs a secret passphrase (blowfish_secret). phpmyadmin
The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

但是,这些问题相对容易解决。对于第一个问题,您所要做的就是抓住您选择的编辑器并进行编辑/usr/share/phpmyadmin/config.inc.php,但是有一个问题,我们将其删除!没关系,您所要做的就是:cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php

  • 我们现在将添加我们的河豚秘密!nano config.inc.php并从该页面底部附近复制动态生成的秘密:https ://www.question-defense.com/tools/phpmyadmin-blowfish-secret-generator 。

示例 phpMyAdmin Blowfish 秘密变量条目:

/*
 * This is needed for cookie based authentication to encrypt password in
 * cookie
 */
$cfg['blowfish_secret'] = '{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V'; 
/* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

现在保存并关闭文件。

  • 现在我们将为 PMA 创建一个 tmp 目录:mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp。最后一个命令允许 Apache Web 服务器拥有 tmp 目录并编辑它的内容。
于 2018-12-10T12:32:49.003 回答
21

尝试在文件中替换此函数:/usr/share/phpmyadmin/libraries/sql.lib.php

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;
}
于 2018-03-28T12:21:58.777 回答
15

Ubuntu 18.10(2018 年 12 月)

第 613、614、615 行,替换为:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;
于 2018-12-18T11:46:23.910 回答
15

为我工作.. Ubuntu 18.04

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

查找count($analyzed_sql_results['select_expr']文件中的代码。你可以在 ~613 行得到这个。

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

只需替换为代码:

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

保存文件并重新加载 PhpMyAdmin。

完毕!!!

于 2019-03-21T12:33:10.847 回答
12

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

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

至:

|| (count($analyzed_sql_results['select_expr']) == 1
于 2019-07-21T14:23:27.587 回答
11

这对我有用;

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

行号:614

替换两个代码:

代替:

(count($analyzed_sql_results[‘select_expr’] == 1)

和:

(count($analyzed_sql_results[‘select_expr’]) == 1)

代替:

($analyzed_sql_results[‘select_expr’][0] == ‘*’)))

和:

($analyzed_sql_results[‘select_expr’][0] == ‘*’))

保存,退出并运行

sudo service apache2 restart
于 2020-12-22T07:32:30.673 回答
9

这在更高版本的 PHPMyAdmin 中已修复。Ubuntu 18.04.2 的 Ubuntu 软件存储库包含版本 4.6.6.5,而它们目前为 4.9.0.1。更新您的 PHPMyAdmin 安装将解决此问题,但可能会比仅编辑那一行代码风险更大。这是我在我的 Ubuntu 服务器上的做法。所有操作系统的步骤基本相同(使用不同的路径)。

  1. 下载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
  1. 备份您的旧 PHPMyAdmin 安装。
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. 将新的 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”质量的东西来说,速度的提高是纯粹的魔力。

于 2019-07-17T15:14:18.980 回答
8

适用于 UBUNTU 16.04.3 只需打开

usr/share/libraries/sql.lib.php

调整

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

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

于 2018-05-19T07:53:52.143 回答
7

这对我来说在Ubuntu 18.04上效果很好。

打开sql.lib.php文件

nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

替换此错误代码:

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

有了这个:

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

保存文件。

使用以下命令重新启动服务器:

sudo service apache2 restart

并刷新PhpMyAdmin

于 2020-05-03T13:23:42.900 回答
6

升级到 phpMyAdmin 4.8.3。这解决了 PHP 7.2 的兼容性问题

于 2018-08-25T17:42:33.277 回答
5

编辑文件 '/usr/share/phpmyadmin/libraries/sql.lib.php' 替换:(进行备份)

"|| (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) 
&& ($analyzed_sql_results['select_expr'][0] == '*') 
&& (count($analyzed_sql_results['select_tables']) == 1));"
于 2018-05-17T09:29:35.990 回答
5

您好以下绝对解决了我同样的问题(导入/导出等):

修复错误 Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

所以...在ubuntu 18.04、mysql、php7.2下:终端:

sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

找到以下行(ctrl+f):

if ($options != null && count($options) > 0) {

对我来说它在第 551 行

更改以下内容:

if ($options != null && count((array)$options) > 0) {

ctrl+s 保存更改

并在终端: ctrl+c 获取返回提示...

和: sudo systemctl restart apache2

“我认为在新的 php 版本中。它不能使用 un 数组类型的 count() 或 sizeof()。强制参数到数组是解决这个错误的简单方法,......”

感谢原作者解决问题!我试着分享一下!

于 2018-10-14T19:53:13.327 回答
5

只需更正文件count()中第 604 行到第 615 行的函数和右括号/usr/share/phpmyadmin/libraries/sql.lib.php

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;
}
于 2021-04-07T11:10:33.577 回答
5

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

这是我在第 614 行所做的更改,并且 phpmyadmin 可以正常工作。在 count 之前需要一个(,在 count 之前)需要一个==。而已。

于 2019-05-19T18:15:48.070 回答
4

我尝试了上述所有解决方案,但对我不起作用。

尝试这个:-

安装所需版本的 PHP(在我的情况下为 7.0),然后在终端中输入

sudo update-alternatives --config php

输出将是这样的:-

在此处输入图像描述

然后,您只需输入选择编号(在我的情况下为 1)即可切换到任何版本的 PHP。

希望这可以帮助其他人-:)

于 2019-04-16T05:40:42.863 回答
3

添加 phpmyadmin ppa

sudo add-apt-repository ppa:phpmyadmin/ppa
sudo apt-get update
sudo apt-get upgrade
于 2020-05-30T14:28:30.067 回答
3

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

  1. ~ 第 613 行修复初始错误:
    • 代替|| count($analyzed_sql_results['select_expr'] == 1)
    • || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ 第 614 行修复可能会出现的 500 错误:
    • 代替&& ($analyzed_sql_results['select_expr'][0] == '*')))
    • && ($analyzed_sql_results['select_expr'][0] == '*'))

重新启动您的 Apache 服务器:sudo service apache2 restart.

在基于 Ubuntu 18.04、PhpMyAdmin 4.6.6 和 PHP 7.2 的 Linux Mint 19.1 上进行了测试。

于 2019-03-20T21:28:56.987 回答
3
add-apt-repository ppa:phpmyadmin/ppa
apt-get clean
apt-get update
apt-get purge phpmyadmin
apt-get install phpmyadmin

在 Ubuntu 18.04 上为我修复了它。

于 2020-08-20T13:42:10.520 回答
3

替换功能:

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;
}
于 2019-05-13T21:05:03.977 回答
2

我在使用 windows 时遇到了这个问题,上面的回复为我解决了这个问题,但是当我切换到 linux(ubuntu 18.04 LTS)时,我遇到了同样的问题,因为我没有看到文件而无法弄清楚如何解决它'/usr/share/phpmyadmin/libraries/sql.lib.php'。

这个 sql.lib.php 文件不在我的 /opt/lampp 目录的 share 文件夹或 phpmyadmin/libraries 文件夹中 - 因为我在我的 ubuntu 上使用 xampp。基于对 xampp 所做的更新(因为我现在使用的是最新安装)设置。

答案还是要替换:(count($analyzed_sql_results['select_expr'] == 1)

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

但是要查找的文件Sql.php位于/opt/lampp/phpmyadmin/libraries/classes/Sql.php

未来的更新或者如果您仍然没有找到它:grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadmin用于在您的目录中搜索匹配的文档并进行相应的编辑

于 2018-08-03T23:41:41.723 回答
2

我看到你们都在编辑或更新我们的文件

对于那些想要自动更新的人,您可以使用我们的 Ubuntu PPA

sudo add-apt-repository ppa:phpmyadmin/ppa

对于 Debian 用户,您需要等待 Debian 的下一个版本或使用 PPA

Ubuntu 20 有 phpMyAdmin 4.9 或更高版本

我们跟踪器上的 Debian 问题

我们跟踪器上的可数问题

TLDR 更新到最新的 4.9 或 5.0 版本来解决这个问题。

于 2020-01-11T12:35:25.023 回答
2

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

在您的错误中查看错误

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(

转到这一行并删除函数调用。

这个对我有用。

于 2018-06-02T05:24:24.663 回答
1

Chandra Nakka这是我利用's answer拼凑起来的自动修补脚本。

FILE="/usr/share/phpmyadmin/libraries/sql.lib.php"
PATTERN="(count(\$analyzed_sql_results\['select_expr'\] == 1)"

echo "Verifying broken code in $FILE"

if grep -q "$PATTERN" "$FILE"; then
  LINE_NUMBER=$(grep -n "$PATTERN" "$FILE" | cut -d : -f 1)
  echo "Broken code found on line: $LINE_NUMBER"
  BEFORE_CODE=$(sed -n "$LINE_NUMBER"p "$FILE")

  echo -e "\nCreating backup of $FILE"
  sudo cp "$FILE" "$FILE-backup-$(date +"%Y-%m-%dT%H%M%S")"
  echo "Backup created at: $FILE-backup-$(date +"%Y-%m-%dT%H%M%S")"

  echo -e "\nApplying fix"
  sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" $FILE
  AFTER_CODE=$(sed -n "$LINE_NUMBER"p "$FILE")

  # Trim before and after code with xargs
  echo "BEFORE: $(echo $BEFORE_CODE | xargs)"
  echo " AFTER: $(echo $AFTER_CODE | xargs)"
else
  echo "Broken code not found. Maybe it's already been patched "
fi
于 2021-09-15T09:53:44.570 回答
1

根据@jbator 的回答,您可以编辑/usr/share/phpmyadmin/libraries/plugin_interface.lib.php和替换这一行:

if ($options != null && count($options) > 0) {

这些行:

if ($options != null &&
   ((is_array($options) || $options instanceof Countable) && count($options) > 0) ||
   (method_exists($options, 'getProperties') && $options->getProperties() != null && (is_array($options->getProperties()) || $options->getProperties() instanceof Countable) && count($options->getProperties()) > 0)) {

这样,我们不会有空的导出文件。

于 2019-05-04T17:50:33.087 回答
1

由于 conf 文件中的代码错误可能会有所不同(@Jacky Nguyen vs @ĦΔŇĐŘΔ ŇΔҜҜΔ 答案),
一般的解决方案 答案是
a)更正 conf 文件中的条件逻辑以使其有意义
(x)或 b)安装更正/当前phpmyadmin

至于一)

  1. 打开带有错误代码的文件
    对于终端人:sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
    对于普通人:sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php

  2. 找到条件 - 基本上搜索$analyzed_sql_results['select_expr']

  3. 现在的逻辑应该是检查这个子数组是否为空,或者它是否只有 1 个具有值的元素“*

  4. 所以基本上和之间的块应该
    看起来像这样&& $analyzed_sql_results['select_from']
    && count($analyzed_sql_results['select_tables']) == 1

&& (
    empty($analyzed_sql_results['select_expr']) //the sub array is empty,
    || //or,
    (
        (count($analyzed_sql_results['select_expr']) == 1) //it has just 1 element
        && //and at the same time
        ($analyzed_sql_results['select_expr'][0] == '*') //the 1 element value is "*"
    )
)

这是一个很好的例子,说明为什么要缩进和美化你的代码,如果它被正确地缩进,我相信这永远不会发生,或者至少会更容易找到。

于 2019-02-15T02:36:12.477 回答
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)

于 2019-05-06T13:20:14.797 回答
1

在带有 MariaDb 和 Nginx 的 Ubuntu 18.04 上,我通过更新文件 /usr/share/phpmyadmin/libraries/sql.lib.php 解决了这个问题,如下所示:

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

@Nguyen 提到的答案引发 500 错误说:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
于 2018-09-10T06:41:50.647 回答
1

(PHP 7 >= 7.3.0) 中引入的is_countable函数

is_countable — 验证变量的内容是否为可计数值。

按照以下方式使用此功能::

is_countable ( $var )

它将返回布尔值。有关更多详细信息,请访问http://php.net/manual/en/function.is-countable.php

于 2019-02-21T11:38:35.200 回答
0

这些解决方案都不适合我,您需要将 phpmyadmin 更新到最新版本,请按照此处的说明进行操作

https://askubuntu.com/questions/947805/how-to-upgrade-phpmyadmin-revisited

于 2019-06-18T12:45:26.913 回答