[英]count(): Parameter must be an array or an object that implements Countable in
[英]phpmyadmin - count(): Parameter must be an array or an object that implements Countable
我已将备份上传到一个表,打开我看到这个表:
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?
使用以下命令编辑文件/usr/share/phpmyadmin/libraries/sql.lib.php
:
sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php
在第613行,由于$analyzed_sql_results['select_expr']
之后没有右括号,count 函数的计算结果总是为真。 进行以下替换可以解决此问题,然后您需要删除第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
只需在终端中运行下面的命令行,然后返回到 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
Find for count($analyzed_sql_results['select_expr']
code on file. 你可以在第 ~ 613行得到这个。你可以在错误代码下面看到这个
|| (count($analyzed_sql_results['select_expr'] == 1)
只需用下面的代码替换那个错误的代码
|| ((count($analyzed_sql_results['select_expr']) == 1)
保存文件并进入PhpMyAdmin 。
现在它工作正常:)
我在 sql.lib.php 中发现了这个PHP 7.2 count() - SYNTAX 错误
这完全适用于我的配置:
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;
}
在 Debian 上测试过,应该适用于 Ubuntu:
1.) 首先下载最新的phpMyadmin 文件。
2.) 删除(备份)位于/usr/share/phpmyadmin
目录中的所有先前版本文件。
3.) 将最新phpmyadmin的所有文件解压到/usr/share/phpmyadmin/
目录下。
4.) 修改文件libraries/vendor_config.php
并更改行:
define('CONFIG_DIR', '');
到
define('CONFIG_DIR', '/etc/phpmyadmin/');
和
define('TEMP_DIR', './tmp/');
到
define('TEMP_DIR', '/tmp/');
5.) 重新启动 apache 服务器并完成。
编辑文件: '/usr/share/phpmyadmin/libraries/sql.lib.php'
替换:( (count($analyzed_sql_results['select_expr'] == 1)
与: (count($analyzed_sql_results['select_expr']) == 1
这对我有用
如果有人在 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) {
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
phpmyadmin 4.7.4 应该具有“修复了与 PHP 7.2 的几个兼容性问题”
您可能有旧版本的 phpmyadmin。
https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/
在 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
并搜索以下功能:
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; }
步骤 4)将上述函数替换为:
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; }
步骤 4)在终端上保存并关闭文件和以下命令
sudo /usr/sbin/pma-secure
步骤 5) sudo service mysql reload
步骤 6) sudo service apache2 reload
它对我有用..祝你好运
Ubuntu 18.04 LTS
这些是对我有用的步骤。 非常感谢 William Desportes 在他们的 Ubuntu PPA 上提供自动更新。
第 1 步(来自 William Desportes 帖子)
$ 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;
打开这个文件:'/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
尝试在文件中替换此函数:/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;
}
我认为最好的选择是将 Phpmyadmin 更新到已修复此问题的版本。
在它作为 deb 发布之前,您可以像在@crimson-501 答案中那样做,我将在下面复制:
apt-get install phpmyadmin
。cd /usr/share
。rm -rf phpmyadmin
。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 的最新版本。 您可以在此处找到这些链接。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
。
nano config.inc.php
并从本页底部附近复制动态生成的秘密: https : //www.question-defense.com/tools/phpmyadmin-blowfish-secret-generator 。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! */
现在保存并关闭文件。
mkdir tmp
& chown -R www-data:www-data /usr/share/phpmyadmin/tmp
。 最后一个命令允许 Apache Web 服务器拥有 tmp 目录并编辑它的内容。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;
为我工作.. 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。
完成!!!
对于我的 phpmyadmin (4.6.6deb5) 版本,我找到了第 613 行,并意识到 count() 括号没有正确关闭。 要在下一个版本之前暂时修复此问题,只需更改:
|| (count($analyzed_sql_results['select_expr'] == 1)
到:
|| (count($analyzed_sql_results['select_expr']) == 1
这在 PHPMyAdmin 的更高版本中得到了修复。 Ubuntu 18.04.2 的 Ubuntu 软件存储库包含版本 4.6.6.5,而它们目前的版本为 4.9.0.1。 更新您的 PHPMyAdmin 安装将解决此问题,但可能证明比仅编辑那一行代码风险更大。 这是我在 Ubuntu Server 上的做法。 所有操作系统的步骤基本相同(具有不同的路径)。
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
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
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”质量的东西来说,速度增加是纯粹的魔法。
适用于 UBUNTU 16.04.3 刚打开
usr/share/libraries/sql.lib.php
修改
|| (count($analyzed_sql_results['select_expr'] == 1)
至
|| ((count($analyzed_sql_results['select_expr']) == 1)
这对我有用;
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
这在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
升级到 phpMyAdmin 4.8.3。 这解决了 PHP 7.2 兼容性问题
编辑文件 '/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));"
嗨,以下绝对解决了我同样的问题(导入/导出等):
修复错误 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 返回提示...
和: sudo systemctl restart apache2
“我认为在新的 php 版本中。它不能使用具有 un 数组类型的 count() 或 sizeof()。强制参数到数组是解决此错误的简单方法,...”
感谢原作者解决问题! 我试着分享!
|| ((count($analyzed_sql_results['select_expr']) == 1
这是我在第 614 行更改的内容,phpmyadmin 可以正常工作,没有任何错误。 在==
之前需要一个(
在计数之前和一个)
。 就是这样。
只需更正/usr/share/phpmyadmin/libraries/sql.lib.php
文件中第 604 行到 615 行的count()
函数和右括号:
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;
}
使用提升的权限打开/usr/share/phpmyadmin/sql.lib.php
文件,并在函数PMA_isRememberSortingOrder()
编辑以下内容:
|| count($analyzed_sql_results['select_expr'] == 1)
|| count($analyzed_sql_results['select_expr'] == 1)
|| (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] == '*'))
重新启动 Apache 服务器: sudo service apache2 restart
。
在基于 Ubuntu 18.04、PhpMyAdmin 4.6.6 和 PHP 7.2 的 Linux Mint 19.1 上测试。
替换功能:
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;
}
添加 phpmyadmin ppa
sudo add-apt-repository ppa:phpmyadmin/ppa
sudo apt-get update
sudo apt-get upgrade
add-apt-repository ppa:phpmyadmin/ppa
apt-get clean
apt-get update
apt-get purge phpmyadmin
apt-get install phpmyadmin
在 Ubuntu 18.04 上为我修复了它。
我已将备份上传到一个表,打开我看到这个表:
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?
我已将备份上传到一个表,打开我看到这个表:
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?
我已将备份上传到一个表,打开我看到这个表:
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?
在具有MariaDb和Nginx的Ubuntu 18.04上,我通过更新文件/usr/share/phpmyadmin/libraries/sql.lib.php解决了它,如下所示:
|| (count($analyzed_sql_results['select_expr']) == 1
@Nguyen提到的答案抛出500错误,说:
FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
(PHP 7> = 7.3.0)中引入的is_countable函数
is_countable —验证变量的内容是否为可计数的值。
按照以下方式使用此功能::
is_countable ( $var )
它将返回布尔值。 有关更多详细信息,请访问http://php.net/manual/en/function.is-countable.php
根据@jbator 的回答,您可以编辑/usr/share/phpmyadmin/libraries/plugin_interface.lib.php
并替换此行:
if ($options != null && count($options) > 0) {
用这些行:
if ($options != null &&
((is_array($options) || $options instanceof Countable) && count($options) > 0) ||
(method_exists($options, 'getProperties') && $options->getProperties() != null && (is_array($options->getProperties()) || $options->getProperties() instanceof Countable) && count($options->getProperties()) > 0)) {
这样,我们将不会有空的导出文件。
看看: https : //devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/
首先,在编辑之前备份sql.lib.php。 在nano中编辑sql.lib.php。
$ sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
按CTRL + W并搜索(count($ analyzed_sql_results ['select_expr'] == 1)
将其替换为((count($ analyzed_sql_results ['select_expr'])== 1)
保存文件并退出。 (按Ctrl + X,按Y,然后按Enter)
这些解决方案都不适合我,您需要将phpmyadmin更新为最新版本,请按照此处的说明进行操作
https://askubuntu.com/questions/947805/how-to-upgrade-phpmyadmin-revisited
这是我利用Chandra Nakka
的答案拼凑的自动修补脚本。
FILE="/usr/share/phpmyadmin/libraries/sql.lib.php"
PATTERN="(count(\$analyzed_sql_results\['select_expr'\] == 1)"
echo "Verifying broken code in $FILE"
if grep -q "$PATTERN" "$FILE"; then
LINE_NUMBER=$(grep -n "$PATTERN" "$FILE" | cut -d : -f 1)
echo "Broken code found on line: $LINE_NUMBER"
BEFORE_CODE=$(sed -n "$LINE_NUMBER"p "$FILE")
echo -e "\nCreating backup of $FILE"
sudo cp "$FILE" "$FILE-backup-$(date +"%Y-%m-%dT%H%M%S")"
echo "Backup created at: $FILE-backup-$(date +"%Y-%m-%dT%H%M%S")"
echo -e "\nApplying fix"
sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" $FILE
AFTER_CODE=$(sed -n "$LINE_NUMBER"p "$FILE")
# Trim before and after code with xargs
echo "BEFORE: $(echo $BEFORE_CODE | xargs)"
echo " AFTER: $(echo $AFTER_CODE | xargs)"
else
echo "Broken code not found. Maybe it's already been patched 🤷"
fi
由于conf文件中代码中的错误可能会有所不同(@Jacky Nguyen与@ĦΔŇĐŘΔΔŇΔҜҜΔΔ答案),
通用解决方案的答案是
a)更正conf文件中的条件逻辑以使其有意义
(x)或b)安装正确/当前的phpmyadmin
至于)
用错误代码打开文件
对于终端用户: sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
对于普通人: sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php
找到条件-基本上搜索$analyzed_sql_results['select_expr']
现在的逻辑应该是检查此子数组是否为空,或者是否只有1个值为“ *
”的元素
所以基本上是块
在&& $analyzed_sql_results['select_from']
和&& count($analyzed_sql_results['select_tables']) == 1
应该看起来像这样
&& ( empty($analyzed_sql_results['select_expr']) //the sub array is empty, || //or, ( (count($analyzed_sql_results['select_expr']) == 1) //it has just 1 element && //and at the same time ($analyzed_sql_results['select_expr'][0] == '*') //the 1 element value is "*" ) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.