Ubuntu16.04升级PHP7.2后phpMyAdmin报错问题咨询
解决Ubuntu 16.04 LTS升级PHP7.2后phpMyAdmin的count()警告问题
这问题我之前帮好几个开发者解决过——PHP7.2开始对count()函数的参数做了严格校验,要求必须是可计数的数组或对象,而大部分4.x版本的phpMyAdmin还没适配这个变化,所以才会弹出那个烦人的警告。给你三个靠谱的解决办法,你可以根据自己的情况选择:
方案1:直接修复phpMyAdmin的源码文件(最快速)
这是最直接的临时修复方式,适合不想折腾升级的场景:
- 首先定位到出问题的文件,路径一般是:
/usr/share/phpmyadmin/libraries/sql.lib.php - 先备份原文件,避免改坏了无法恢复:
sudo cp /usr/share/phpmyadmin/libraries/sql.lib.php /usr/share/phpmyadmin/libraries/sql.lib.php.bak - 用文本编辑器打开文件(比如nano):
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php - 找到第601行附近的代码(不同小版本可能行号略有差异,你可以搜索
count(): Parameter must be an array相关的代码块),原代码大概是:if (count($analyzed_sql_results['select_expr']) == 1) { - 修改成强制转成数组的形式,确保
count()的参数始终是可计数的:if (count((array)$analyzed_sql_results['select_expr']) == 1) { - 保存文件(nano里按
Ctrl+O,回车确认,再按Ctrl+X退出) - 重启你的Web服务,比如Apache:
或者如果用的是PHP-FPM:sudo systemctl restart apache2
之后再打开phpMyAdmin,警告就应该消失了。sudo systemctl restart php7.2-fpm
方案2:升级phpMyAdmin到适配PHP7.2的版本(一劳永逸)
如果想彻底解决这个问题,建议升级到支持PHP7.2的phpMyAdmin版本(4.8.5及以上)。Ubuntu 16.04默认源里的版本比较旧,你可以通过官方PPA来安装:
- 添加phpMyAdmin的官方PPA:
sudo add-apt-repository ppa:phpmyadmin/ppa - 更新系统源:
sudo apt update - 升级phpMyAdmin:
sudo apt install phpmyadmin - 同样重启Web服务,之后新版本的phpMyAdmin就不会有这个兼容性问题了。
方案3:临时关闭PHP警告(不推荐长期使用)
如果只是临时需要屏蔽警告,不想修改文件或升级,可以通过调整PHP的错误报告级别来实现,但这个方法会隐藏所有警告,可能错过其他有用的错误信息,所以只建议应急用:
- 打开PHP的配置文件,比如
/etc/php/7.2/apache2/php.ini(如果是PHP-FPM则对应/etc/php/7.2/fpm/php.ini) - 找到
error_reporting这一行,修改为:error_reporting = E_ALL & ~E_WARNING & ~E_NOTICE - 或者你也可以在phpMyAdmin的配置文件
config.inc.php末尾添加一行:error_reporting(0); - 重启Web服务后,警告就不会再弹出了。
注意事项
- 方案1的修改会在phpMyAdmin更新后被覆盖,所以如果后续通过apt升级了phpMyAdmin,需要重新做一次修改;
- 方案2添加PPA后,后续系统更新会自动升级phpMyAdmin到最新适配版本,更省心;
- 方案3尽量不要长期使用,否则可能忽略其他重要的错误提示。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

