在 Ubuntu 上手动更新 phpMyAdmin
在撰写本文时,Ubuntu包管理器(4.5.4) 中可用的 phpMyAdmin 版本不完全支持 php7.2,这会导致恼人的 count() 警告。解决方案是更新到最新的 phpMyAdmin 版本,在撰写本文时为 4.7.9。
Ubuntu 软件包落后。有一个phpMyAdmin PPA,但它也在后面:
“注意:这个存储库目前有点落后,因为我很难找到时间将其更新到 4.7 系列。”</p>
幸运的是,我们可以从旧版本手动升级。
基本步骤是:
- 制作当前安装的备份副本
- 下载并解压最新版本的phpMyAdmin
- 将 vendor_config.php 文件修改为适用于 Ubuntu 的目录
- 添加更长的随机字符串以解决河豚错误消息并允许正确的 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 时可能会遇到河豚错误。要解决此问题,您应该更新特定的配置文件:
- 打开
vendor_config.php
方式/usr/share/phpmyadmin/libraries/vendor_config.php
- 在第 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/');
此时,phpMyAdmin 可以正常工作,但您可能需要为 blowfish_secret 配置字符串添加额外的长度。
- 打开文件
/var/lib/phpmyadmin/blowfish_secret.inc.php
。
你应该看到:
<?php
$cfg['blowfish_secret'] = 'Something Short';
- 为字符串添加额外的随机性
$cfg['blowfish_secret']
,至少 40 个字符甚至更长可能会更好(我使用的字符串只要 100 个字符)。
例如(不要使用这个,只是一个例子):
$cfg['blowfish_secret'] = 'A much longer random string 7NfSjYezwmwGCfGDuDO7uWn4ESw2sCFCym1RatPjGCfGCym1RatPjGCfG';
- 保存文件。
此时,刷新 phpMyAdmin(在您的浏览器中)并再次登录。现在一切都应该正常工作。
如果需要,您可以删除旧 phpMyAdmin 版本的备份副本:
rm -rfv /usr/share/phpmyadmin_old
附加文件
作为参考,以下是官方 phpMyAdmin 文档中关于手动更新到最新版本的摘录(这不是Ubuntu 特定的):
警告
永远不要在现有的 phpMyAdmin 安装上提取新版本,总是首先删除旧文件,只保留配置。
这样您就不会在目录中留下旧的不再工作的代码,这可能会产生严重的安全隐患或导致各种破坏。
和:
只需几个简单的步骤即可完成完整的升级:
从https://www.phpmyadmin.net/downloads/下载最新的 phpMyAdmin 版本
。
重命名现有的 phpMyAdmin 文件夹(例如,改为 phpmyadmin-old)。
将新下载的 phpMyAdmin 解压到所需位置(例如 phpmyadmin)。
将 config.inc.php` 从旧位置 (phpmyadmin-old) 复制到新位置 (phpmyadmin)。
测试一切正常。
删除以前版本的备份(phpmyadmin-old)。