【问题标题】:phpmyadmin - count():参数必须是数组或者实现了Countable的对象
【发布时间】:2018-06-08 15:40:10
【问题描述】:

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

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?

【问题讨论】:

  • 那些在CodeIgniter中遇到问题的人是:if ( count($articles)){..},他们应该使用:if ( count((array)$articles)){..}作为here
  • 我在 phpmyadmin v4.6 上遇到了这个问题,我更新到 4.8 它消失了。 ,看起来它与mariadb 10.3有关,因为我在使用phpmyadmin 4.6的mariadb 10.1上没有这个问题
  • 在我的情况下,当我的 phpMyAdmin 是 4.7.1 时安装 php 7.3 时出现问题,我切换回 php 7.0 并且它工作正常,或者您应该安装与 php 7.3 兼容的 phpMyAdmin 版本

标签: php phpmyadmin countable


【解决方案1】:

使用此命令编辑文件/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

【讨论】:

  • 难以置信。可在 Ubuntu 18.04 上使用 apt 安装 phpmyadmin。
  • 我可以选择表,但是当我尝试导出 Db 时返回错误
  • 如果您在 DB 导出中遇到类似问题,您需要编辑 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php,从 if ($options != null && count($options) > 0) { to _if ($options != null && count((array)$options) > 0) { @alperian 和其他人可能会感兴趣
  • 这对我不起作用。我得到了Error in processing request Error code: 500 Error text: Internal Server Error。 @Chandra Nakka 的解决方案解决了我的问题。
【解决方案2】:

最简单的方法:

只需在终端的命令行下面运行它,然后返回到 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 年 8 月在 Ubuntu 18.04 中工作 :)
  • 像魅力一样工作
  • 适用于 Ubuntu 19.04。谢谢
  • nano 的一个巧妙小技巧是,您可以输入nano +613 filename 以直接将您带到特定行。
  • @SteffenNielsen 非常感谢这个有用的提示 :)
【解决方案3】:

我找到了这个PHP 7.2 count() - SYNTAX error in sql.lib.php

这完全适用于我的配置:

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

换行:将括号移到==

之前

|| ((count($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;
 }

【讨论】:

  • 在以下行中,您还必须删除末尾的右括号之一。
  • 谢谢。这样的错误是如何通过 apt 可安装包发布的?有点可笑。
  • @floppes 不,这是不正确的。你不应该删除那个右括号。我已经测试了你的方式,它导致了server error。 @loquace 的回答应该是被接受的。
  • 感谢您为我们拼写出来并在需要的地方使用粗体。第一个和第二个答案对我来说都不够清楚,因为他们没有说他们在做什么。在 nano 上进行编辑与 gedit 或其他什么不同。
【解决方案4】:

在 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 服务器并完成。

【讨论】:

  • 适用于 Ubuntu 16.04
  • 适用于 Ubuntu 18.04
  • Ubuntu 18.04, phpMyAdmin 4.8.0.1 - 我需要mkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
  • Ubuntu 16.04 只需将其解压缩到 /usr/share/phpmyadmin 即可。不需要遵循后面的步骤。
  • @billynoah 与新安装相同。我创建了 tmp 目录,将其设置为 777,重新启动 Apache,退出 phpMyAdmin,错误消失了。
【解决方案5】:

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

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

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

这对我有用

【讨论】:

  • 它对我有用,基于您已修复内部 500 错误的条件已解决,但旧错误问题“phpmyadmin - count(): Parameter must be an array or an object that implements Countable”未解决.
  • 这似乎对我有用,但有人知道为什么会这样吗?我的 phpmyadmin 工作得很好,然后我今天突然登录,似乎有这个问题? Ubuntu 18.04.2 LTS
  • 适用于 UBuntu 18.04,wing Nginx,php 7.2
【解决方案6】:

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

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {

【讨论】:

  • 这对我也有帮助,但我必须同时做答案和这个。 Ubuntu 18.04
  • 这可以消除错误消息,但我认为它可以一起避免 if 语句,并且我的数据库导出中没有任何内容(底部显示一堆错误在完成数据库导出后刷新页面后,文件占用空间很小)
  • 在 Debian 9 上,将第 551 行:if ($options != null && count($options) > 0) { 替换为:if ($options != null) {,然后您可以导出
  • 这是对以 551 结尾的错误的修复 - 因为错误位于第 551 行。另一个修复也很好,但它是对另一个问题的修复。这应该是这个问题的公认答案。
【解决方案7】:
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

【讨论】:

  • 这在 18.04 对我有用,谢谢!甚至不需要重新启动服务器 - PHP 被解释为“实时”。
  • @JelleVeraa , 你是特例呵呵 ;)
【解决方案8】:

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

您可能有旧版本的 phpmyadmin。

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

【讨论】:

    【解决方案9】:

    Ubuntu 18.04 LTS

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

    第 1 步 (from William Desportes post)
    $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;

    【讨论】:

    • 解决了 Ubuntu 18.04 LTS 上的问题。应该是公认的答案。
    【解决方案10】:

    在 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

    它对我有用.. 祝你好运

    【讨论】:

    • 不需要重新加载 MySQL 和 apache。
    • 我在文件修改后收到此消息:“— root@Lalla:~# /usr/sbin/pma-secure — 保护 phpMyAdmin 安装... — 安装脚本不会'无法编写配置。 — root@Lalla:~# "
    【解决方案11】:

    打开这个文件:'/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
    

    【讨论】:

    • 您只是添加了一个大括号。不过谢谢。我删除了行尾的额外大括号
    • 我在我的 Mac 上安装了 xampp,我找不到 /usr/share/phpmyadmin 文件夹,因此 '/usr/share/phpmyadmin/libraries/sql.lib.php' 这对我来说是存在的,你能帮忙吗?
    【解决方案12】:

    尝试在文件中替换此函数: /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;
    }
    

    【讨论】:

    • 谢谢!这一行是我在最后错误的地方,我插入了 3 个右括号,我只需要 2 个右括号 && ($analyzed_sql_results['select_expr'][0] == '*'))。在 phpmyadmin 4.6、php 7.2.10、ubuntu 18.4.1 上工作
    • 这行得通。有两个变化,在第 613 行添加缺少的右括号 (count($analyzed_sql_results['select_expr'] == 1) 应该是 (count($analyzed_sql_results['select_expr']) == 1) 并在第 614 行删除额外的括号 && ($analyzed_sql_results['select_expr'][0] == '*'))) 应该是 && ($analyzed_sql_results['select_expr'][0] == '*'))
    【解决方案13】:

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

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

    • 您的第一步是从官方 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 的最新版本。你可以找到这些链接HERE
    • 对于下一步,您需要解压缩 (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

    示例 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 目录并编辑它的内容。

    【讨论】:

    • 这个答案非常有用!为我解决了问题!谢谢! PS:你可以在网上找到河豚发电机。
    • 这个链接上的解决方案:devanswers.co/manually-upgrade-phpmyadmin 遵循类似的计划,除了用更简单的步骤替换河豚步骤..
    • 与编辑旧版本的配置文件相比,这是一个更好的解决方案。
    • 这是最好的解决方案。按照此链接:devanswers.co/manually-upgrade-phpmyadmin 我能够删除计数参数错误和服务器错误 500 错误(接受的答案没有删除)。绝对真正的问题是默认安装的 phpmyadmin 版本。非常感谢。 +1。
    【解决方案14】:

    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;
    

    【讨论】:

    • 它对我有用.. 不需要升级 mysql 或任何东西......谢谢@ole
    【解决方案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。

    完成!!!

    【讨论】:

    • 第613行,改成|| (count($analyzed_sql_results['select_expr']) == 1
    【解决方案16】:

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

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

    到:

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

    【讨论】:

    • 缺少括号来关闭函数调用 || (count($analyzed_sql_results['select_expr']) == 1 是正确的语句
    • 文件路径是“/usr/share/phpmyadmin/libraries/sql.lib.php”,不知道去哪里找的人。
    【解决方案17】:

    这对我有用;

    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
    

    【讨论】:

    • 为我工作了 Raspbian GNU/Linux 10 (buster)
    【解决方案18】:

    这已在更高版本的 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”质量的东西来说,速度的提高是纯粹的魔力。

    【讨论】:

    • 我会切换 1 和 2 的顺序,在 wget 之前我会 cd /tmp 但除此之外,非常好,谢谢。
    【解决方案19】:

    适用于 UBUNTU 16.04.3 直接打开

    usr/share/libraries/sql.lib.php

    修改

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

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

    【讨论】:

      【解决方案20】:

      这对我来说在 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

      【讨论】:

      • 不需要重启服务器。
      【解决方案21】:

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

      【讨论】:

        【解决方案22】:

        编辑文件 '/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));"
        

        【讨论】:

          【解决方案23】:

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

          Fix Bug 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 for get back promt...

          和: sudo systemctl restart apache2

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

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

          【讨论】:

            【解决方案24】:

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

            这是我在第 614 行更改的内容,phpmyadmin 可以正常工作。 在计数之前需要一个 ( ,在 == 之前需要一个 ) 。而已。

            【讨论】:

              【解决方案25】:

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

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

              【讨论】:

              • 比其他答案更清晰、更简单!谢谢!
              【解决方案26】:

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

              试试这个:-

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

              sudo update-alternatives --config php
              

              输出将是这样的:-

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

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

              【讨论】:

                【解决方案27】:

                使用提升的权限打开/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 上测试。

                【讨论】:

                  【解决方案28】:

                  替换功能:

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

                  【讨论】:

                    【解决方案29】:

                    添加 phpmyadmin ppa

                    sudo add-apt-repository ppa:phpmyadmin/ppa
                    sudo apt-get update
                    sudo apt-get upgrade
                    

                    【讨论】:

                    • 除了修复源错误的其他答案之外,实际上是一个非常有用的答案
                    • 没错,我忘了提,但我在我的情况下进行了升级。谢谢!
                    【解决方案30】:
                    add-apt-repository ppa:phpmyadmin/ppa
                    apt-get clean
                    apt-get update
                    apt-get purge phpmyadmin
                    apt-get install phpmyadmin
                    

                    在 Ubuntu 18.04 上为我修复了它。

                    【讨论】:

                      猜你喜欢
                      • 2018-06-28
                      • 2019-08-03
                      • 2018-09-22
                      • 1970-01-01
                      • 2018-11-26
                      • 2019-04-02
                      • 2020-04-27
                      • 2021-11-05
                      • 1970-01-01
                      相关资源
                      最近更新 更多