在Ubuntu 16上升级php7.2后phpMyAdmin错误(计数,河豚等)

Jus*_*tin 7 blowfish phpmyadmin count ubuntu-16.04 php-7.2

php7.2升级后phpMyAdmin错误

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

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

在窗口的底部:

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

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

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

在包括和低于4.5.4的各种phpMyAdmin 4.x版本上会出现此问题.

我该如何解决?


更新 - Blowfish错误

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

"配置文件现在需要一个秘密密码(blowfish_secret)."

我该如何解决?

Jus*_*tin 15

在Ubuntu上手动更新phpMyAdmin

在编写本文时,Ubuntu 包管理器(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. 添加更长的随机字符串以解决blowfish错误消息并允许正确的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
Run Code Online (Sandbox Code Playgroud)

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


解决河豚错误消息

此时,使用phpMyAdmin时可能会出现blowfish错误.要解决此问题,您应该更新特定的配置文件:

  1. 打开vendor_config.php/usr/share/phpmyadmin/libraries/vendor_config.php
  2. 上或周围线38,替换define('CONFIG_DIR', '');define('CONFIG_DIR', '/etc/phpmyadmin/');和保存文件.

当你完成后,第33-38行vendor_config.php应该看起来像:

/**
 * 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/');
Run Code Online (Sandbox Code Playgroud)

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

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

你应该看到:

<?php
$cfg['blowfish_secret'] = 'Something Short';
Run Code Online (Sandbox Code Playgroud)
  1. $cfg['blowfish_secret']字符串添加额外的随机性,至少40个字符甚至更长可能更好(我使用一个字符串长达100个字符).

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

$cfg['blowfish_secret'] = 'A much longer random string 7NfSjYezwmwGCfGDuDO7uWn4ESw2sCFCym1RatPjGCfGCym1RatPjGCfG';
Run Code Online (Sandbox Code Playgroud)
  1. 保存文件.

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

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

rm -rfv /usr/share/phpmyadmin_old
Run Code Online (Sandbox Code Playgroud)

其他文件

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

警告

永远不要在现有的phpMyAdmin安装中提取新版本,总是首先删除保留配置的旧文件.

这样您就不会在目录中留下旧的不再工作的代码,这可能会产生严重的安全隐患或导致各种破坏.

和:

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

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

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

  3. 将刚刚卸载的phpMyAdmin解压缩到所需位置(例如phpmyadmin).

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

  5. 测试一切正常.

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