【问题标题】:phpMyAdmin errors (count, blowfish, etc.) after php7.2 upgrade on Ubuntu 16在 Ubuntu 16 上升级 php7.2 后的 phpMyAdmin 错误(计数、河豚等)
【发布时间】:2018-08-21 02:45:54
【问题描述】:

php7.2 升级后的 phpMyAdmin 错误

在 Ubuntu 16.04 LTS 上升级到 php7.2 后,phpMyAdmin 在我查看表格时显示烦人的弹出警告:

“在服务器上检测到一些错误!请查看此窗口的底部。全部忽略。忽略。”

在窗口底部:

“./libraries/sql.lib.php#601中的警告

count():参数必须是数组或者实现了Countable的对象

...后面是一个很长的回溯列表。

此问题出现在各种 phpMyAdmin 4.x 版本上,包括 4.5.4 及以下版本。

我该如何解决这个问题?


更新 - Blowfish 错误

升级到最新版本的 phpMyAdmin (4.7.9) 后,我现在收到一个新错误,显示在每个页面的底部:

“配置文件现在需要一个秘密密码 (blowfish_secret)。”

我该如何解决这个问题?

【问题讨论】:

    标签: count phpmyadmin ubuntu-16.04 blowfish php-7.2


    【解决方案1】:

    在 Ubuntu 上手动更新 phpMyAdmin

    在撰写本文时,Ubuntu package manager (4.5.4) 中可用的 phpMyAdmin 版本不完全支持 php7.2,这会导致恼人的 count() 警告。 解决方案是更新到最新的 phpMyAdmin 版本,在撰写本文时是 4.7.9。

    Ubuntu 软件包落后。有一个phpMyAdmin PPA,但它也在后面:

    “注意:这个存储库目前有点落后,因为我很难找到时间将其更新到 4.7 系列。”

    幸运的是,我们可以手动从旧版本升级。

    基本步骤是:

    1. 制作当前安装的备份副本
    2. 下载并解压最新版本的phpMyAdmin
    3. 修改vendor_config.php文件到适合Ubuntu的目录
    4. 添加更长的随机字符串以解决河豚错误消息并允许正确的 cookie 身份验证

    这些终端命令应该可以完成工作(如果适用,请使用 sudo):

    mv /usr/share/phpmyadmin /usr/share/phpmyadmin_old
    mkdir /usr/share/phpmyadmin
    mkdir /var/downloads
    cd /var/downloads
    wget https://files.phpmyadmin.net/phpMyAdmin/4.7.9/phpMyAdmin-4.7.9-all-languages.tar.gz
    tar -xf phpMyAdmin-4.7.9-all-languages.tar.gz -C /usr/share/phpmyadmin --strip-components=1
    

    可选)将 wget 行替换为您选择的最新版本或首选格式。访问https://www.phpmyadmin.net/downloads/


    解决河豚错误信息

    此时,您在使用 phpMyAdmin 时可能会遇到河豚错误。要解决此问题,您应该更新特定的配置文件:

    1. /usr/share/phpmyadmin/libraries/vendor_config.php 中打开vendor_config.php
    2. 在第 38 行或附近,将 define('CONFIG_DIR', ''); 替换为 define('CONFIG_DIR', '/etc/phpmyadmin/'); 并保存文件。

    完成后,vendor_config.php 的第 33-38 行应如下所示:

    /**
     * Directory where configuration files are stored.
     * It is not used directly in code, just a convenient
     * define used further in this file.
     */
    define('CONFIG_DIR', '/etc/phpmyadmin/');
    

    此时,phpMyAdmin 可能会正常工作,但您可能需要为 blowfish_secret 配置字符串添加额外的长度

    1. 打开文件/var/lib/phpmyadmin/blowfish_secret.inc.php

    你应该看到:

    <?php
    $cfg['blowfish_secret'] = 'Something Short';
    
    1. $cfg['blowfish_secret'] 字符串添加额外的随机性,至少40 个字符甚至更长可能会更好(我使用的字符串只要100 个字符)。

    例如(不要用这个,只是一个例子):

    $cfg['blowfish_secret'] = 'A much longer random string 7NfSjYezwmwGCfGDuDO7uWn4ESw2sCFCym1RatPjGCfGCym1RatPjGCfG';
    
    1. 保存文件。

    此时,刷新 phpMyAdmin(在您的浏览器中)并再次登录。现在一切都应该正常工作了。

    如果需要,您可以删除旧 phpMyAdmin 版本的备份副本:

    rm -rfv /usr/share/phpmyadmin_old
    

    其他文档

    作为参考,以下是official phpMyAdmin documentation 关于手动更新到最新版本的摘录(这不是特定于 Ubuntu):

    警告

    切勿在现有安装的基础上提取新版本 phpMyAdmin,总是首先删除旧文件,只保留 配置。

    这样您就不会在 目录,这可能具有严重的安全隐患或可能导致 各种破损。

    还有:

    只需几个简单的步骤即可完成完整的升级:

    1. 从以下位置下载最新的 phpMyAdmin 版本 https://www.phpmyadmin.net/downloads/

    2. 重命名现有的 phpMyAdmin 文件夹(例如改为 phpmyadmin-old)。

    3. 将新下载的 phpMyAdmin 解压到所需位置(例如 phpmyadmin)。

    4. 将 config.inc.php` 从旧位置 (phpmyadmin-old) 复制到新位置 (phpmyadmin)。

    5. 测试一切正常。

    6. 删除以前版本的备份(phpmyadmin-old)。

    【讨论】:

    • +1 非常彻底,效果很好,希望我可以再为命令行快捷方式 +1!我没有收到 Blowfish 错误,所以这更容易 ??(我使用的是 Laravel Homestead,所以我不得不将 /usr/share/ 更改为 /Code/)
    • 在 Debian 9.6 + Nginx 上,我不得不 chown:chown -R nginx:nginx /var/lib/phpmyadmin
    【解决方案2】:

    修复错误的另一个选择是将 php 暂时降级到 7.1 版,直到 ubuntu 赶上它的 phpmyadmin 版本。指令here。我发现这更容易,而且无论如何都没有理由站在 php 的前沿。

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 2019-02-16
      • 2016-04-29
      • 2016-07-22
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多