phpmyadmin - count (): O parâmetro deve ser uma matriz ou um objeto que implemente Countable


468

Fiz upload do backup para uma tabela, abrindo a tabela, vejo o seguinte:

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)

Por dentro do phpMyAdmin ...

PHP é 7.2, o servidor é Ubuntu 16.04, instalado ontem.

Procurando vi que alguns têm esse erro em seu código, mas não encontrei ninguém que o recebeu no phpMyAdmin ...

O que devo fazer? Esse erro foi meu? Um erro do phpmyadmin? aguarde atualização? Volto ao PHP 7.1?


9
Aqueles que estão enfrentando problemas como: if ( count($articles)){..}no CodeIgniter , devem usar: if ( count((array)$articles)){..}como aqui #
fWd82

2
eu tive esse problema no phpmyadmin v4.6 eu atualizei para 4.8 desapareceu. , Parece que tem algo a ver com o MariaDB 10.3 como eu não tinha essa questão em MariaDB 10.1 com phpmyadmin 4.6
user889030

No meu caso, o problema ocorreu quando eu tinha instalado php 7.3 enquanto meu phpMyAdmin 4.7.1 foi, eu mudei de volta para php 7.0 e ele funciona muito bem ou que deviam instalar versão do phpMyAdmin compatível com php 7.3
VINSA

Respostas:


877

Edite o arquivo /usr/share/phpmyadmin/libraries/sql.lib.phpusando este comando:

sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

Na linha 613, a função de contagem sempre é avaliada como verdadeira, pois não há parênteses de fechamento depois $analyzed_sql_results['select_expr']. Fazer as substituições abaixo resolve isso, então você precisará excluir o último parêntese de fechamento na linha 614, pois agora é um parêntese extra.

Substituir:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))

Com:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr']) == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*'))

Reinicie o servidor apache:

sudo service apache2 restart

95
Inacreditável. Funciona no Ubuntu 18.04 com o phpmyadmin instalado usando o apt.
PNDA

7
Trabalhei em que eu podia selecionar tabelas, mas o erro retornou quando tentei exportar Db
Alperian


30
Se você enfrentar um problema semelhante na exportação de banco de dados, precisará editar /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, linha 551 de if ($ options! = Null && count ($ options)> 0) {para _if ($ options! = null && count ((array) $ options)> 0) { Pode ser interessante para @alperian e outros #
Bernd Schuhmacher

5
Isso não funcionou para mim. Eu tenho Error in processing request Error code: 500 Error text: Internal Server Error. A solução do @Chandra Nakka resolveu o meu problema.
Jee

473

Método mais fácil:

Basta executar esta linha de comando abaixo no terminal e voltar ao PhpMyAdmin. Agora funciona bem :)

sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

Método manual:

Abra o arquivo sql.lib.php

nano /usr/share/phpmyadmin/libraries/sql.lib.php

Encontre o count($analyzed_sql_results['select_expr']código no arquivo. Você pode obter isso na linha ~ 613 . Você pode ver isso abaixo código errado

|| (count($analyzed_sql_results['select_expr'] == 1)

Apenas substitua esse código errado por este abaixo

|| ((count($analyzed_sql_results['select_expr']) == 1)

Salve o arquivo e acesse o PhpMyAdmin .

Agora funciona bem :)


39
Funciona no Ubuntu 18.04 em ago 2018 :)
Luiz Gonçalves

4
Não funcionou para mim no Ubuntu 16.04
SP Singh

2
Funciona como charme
Rameez Rami

2
Funciona no Ubuntu 19.04. Obrigado
murume

4
Um pequeno truque para o nano é que você pode digitar nano +613 filenamepara levá-lo diretamente à linha específica.
SteffenNielsen 30/10/19

102

Encontrei este erro PHP 7.2 count () - SYNTAX no sql.lib.php

Isso funciona perfeitamente na minha configuração:

Debian 9, 
PHP 7.2.3-1+0~20180306120016.19+stretch~1.gbp81bf3b (cli) (built: Mar  6 2018 12:00:19) ( NTS )

Aberto /usr/share/phpmyadmin/libraries/sql.lib.php

Alterar linha : mova parênteses antes de ==

|| ( (count ($ managed_sql_results ['select_expr'] ) == 1) && ($ managed_sql_results ['select_expr'] [0] == '*')))

no

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;
 }

Na linha a seguir, você também precisará remover uma das parênteses de fechamento no final.
Floppes 29/11/18

Obrigado. Como esse erro foi lançado com um pacote instalável apt? Apenas um pouco ridículo.
Josh Morel #

1
@ floppes Não, não está correto. Você NÃO DEVE remover essa parêntese de fechamento. Eu testei o seu caminho e isso causou server error. A resposta do @ loquace deve ser a única a ser aceita.
Long

Agradecemos por nos informar e usar a fonte em negrito onde for necessário. Nem a primeira nem a segunda respostas foram suficientemente claras para mim, porque não disseram o que estavam fazendo. Editar no nano não é o mesmo que gedit ou o que seja.
Lógicobloke 25/11/19

70

testado no Debian, deve funcionar no Ubuntu:

1.) Primeiro baixe o arquivo phpMyadmin mais recente.

2.) Exclua (faça um backup) de todos os arquivos da versão anterior, localizados no /usr/share/phpmyadmindiretório

3.) Descompacte para /usr/share/phpmyadmin/diretório todos os arquivos do último phpmyadmin.

4.) Modifique o arquivo libraries/vendor_config.phpe altere a linha:

define('CONFIG_DIR', '');

para

define('CONFIG_DIR', '/etc/phpmyadmin/');

e

define('TEMP_DIR', './tmp/');

para

define('TEMP_DIR', '/tmp/');

5.) reinicie o servidor apache e pronto.


3
Funciona no Ubuntu 16.04 #
181/18

7
Funciona no Ubuntu 18.04
Simon Epskamp

5
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - Eu precisavamkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

O Ubuntu 16.04 acabou de extraí-lo para /usr/share/phpmyadminfuncionar. Não foi necessário seguir as etapas posteriores.
Tushar.dahiwale

@billynoah Mesmo aqui com nova instalação. Criei o diretório tmp, defina-o como 777, reiniciei o Apache, efetuei logout do phpMyAdmin e os erros desapareceram.
JScarry

38

Editar arquivo :'/usr/share/phpmyadmin/libraries/sql.lib.php'

Substitua :(count($analyzed_sql_results['select_expr'] == 1)

Com : (count($analyzed_sql_results['select_expr']) == 1

isso funcionou para mim


Ele funcionou para mim com base na condição de corrigir o erro interno 500 foi resolvido, mas o antigo problema de erro "phpmyadmin - count (): O parâmetro deve ser uma matriz ou um objeto que implementa Contável" não foi resolvido.
precisa saber é o seguinte

isso parece funcionar para mim, mas alguém sabe por que isso aconteceu? Meu phpmyadmin estava funcionando muito bem e, de repente, entrei hoje e parecia ter esse problema? Ubuntu 18.04.2 LTS
wheelsmanx

Funciona no UBuntu 18.04, wing Nginx, php 7.2
PHPer

34
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

Isso funcionou para mim em 18.04, obrigado! Não é necessário nem mesmo reiniciar o servidor - o PHP é interpretado como 'ativo'.
Jelle Veraa

@JelleVeraa, Você é o hehehe caso especial;)
Kaleem

32

Se alguém tiver um erro semelhante na página de exportação do banco de dados (eu tive esse problema no Ubuntu 18.04), substitua a linha 551 no arquivo /usr/share/phpmyadmin/libraries/plugin_interface.lib.phppelo código

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {

Isso me ajudou também, mas eu tive que fazer a resposta e isso. Ubuntu 18.04
Karuhanga

2
Isso funcionou para livrar-se das mensagens de erro, mas acho que evita a instrução if todos juntos e não recebo nada na exportação do banco de dados (com vários erros aparecendo na parte inferior após a atualização da página após a conclusão do banco de dados exportação com uma pequena pegada de arquivo)
Warren Wang

Beije, beije, eu amo você.
Noah Krasser

1
No Debian 9, substitua a linha 551: if ($options != null && count($options) > 0) {por: if ($options != null) {então você pode exportar
BitDEVil2K16

Este foi o único que trabalhou em 18.04
TeT Psy


24

Siga as etapas abaixo no ubuntu-18.04:

Etapa 1) localizesql.lib.php

Ele mostrará algo como:

/usr/share/phpmyadmin/libraries/sql.lib.php

Etapa 2) Abra o terminal (Alt t) e escreva:

sudo /usr/sbin/pma-configure

Etapa 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php e pesquise abaixo da função:

 

    função PMA_isRememberSortingOrder ($ managed_sql_results)
     {
        retornar $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ managed_sql_results ['is_count']
                || $ managed_sql_results ['is_export']
                || $ managed_sql_results ['is_func']
                || $ managed_sql_results ['is_analyse'])
            && $ managed_sql_results ['select_from']
            && ((vazio ($ managed_sql_results ['select_expr'])))
                || (count ($ managed_sql_results ['select_expr'] == 1)
                    && ($ managed_sql_results ['select_expr'] [0] == '*')))
            && count ($ managed_sql_results ['select_tables']) == 1;
     }

Etapa 4) Substitua a função acima por:

     função PMA_isRememberSortingOrder ($ managed_sql_results)
     {
        retornar $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ managed_sql_results ['is_count']
                || $ managed_sql_results ['is_export']
                || $ managed_sql_results ['is_func']
                || $ managed_sql_results ['is_analyse'])
            && $ managed_sql_results ['select_from']
            && ((vazio ($ managed_sql_results ['select_expr'])))
                || (count ($ managed_sql_results ['select_expr']) == 1)
                    && ($ managed_sql_results ['select_expr'] [0] == '*'))
            && count ($ managed_sql_results ['select_tables']) == 1;
     }

Etapa 4) Salvar e fechar o arquivo e o comando abaixo no terminal

sudo /usr/sbin/pma-secure

Etapa 5) sudo service mysql reload

Etapa 6) sudo service apache2 reload

Funciona para mim .. Goodluck


O MySQL e o apache reload não são necessários.
Tacsiazuma 4/11

Recebi esta mensagem após a modificação do arquivo: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Protegendo a instalação do phpMyAdmin ... - O script de instalação não poderá gravar a configuração. - root @ Lalla: ~ # "
cl-r

22

abra este arquivo: '/usr/share/phpmyadmin/libraries/sql.lib.php'

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

pressione ctrl + w para pesquisar (count ($ managed_sql_results ['select_expr'] == 1)

Find: count($analyzed_sql_results['select_expr'] == 1)

Replace With:  (count($analyzed_sql_results['select_expr']) == 1)

Reinicie o servidor

 sudo service apache2 restart

além disso, se você ainda está enfrentando o mesmo problema, faça o seguinte.

abra este arquivo /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

Localizar: if ($ options! = Null && count ($ options)> 0) {

Ctrl+w : if ($options != null && count($options) > 0) {

substitua pelo seguinte código

if ($options != null && count((array)$options) > 0) {

agora salve e reinicie o servidor

sudo /etc/init.d/apache2 restart

Você simplesmente adicionou uma chave. Mas obrigada. Eu removi a chave extra no final da linha
redestructa 21/02/19

Eu tenho o xampp instalado no meu mac, não consegui encontrar a pasta / usr / share / phpmyadmin e, portanto, '/usr/share/phpmyadmin/libraries/sql.lib.php' esse dosent existe para mim, você pode ajudar nisso?
Saurabh Verma

18

Eu acho que a melhor opção é atualizar o Phpmyadmin para uma versão que já esteja corrigida.

Até que seja publicado como deb, você pode fazê-lo como na resposta @ crimson-501, que copiarei abaixo:

  • Seu primeiro passo é instalar PMA (phpMyAdmin) a partir do repo oficial Ubuntu: apt-get install phpmyadmin.
  • Em seguida, cd para o diretório usr / share: cd /usr/share.
  • Em terceiro lugar, remover o diretório phpMyAdmin: rm -rf phpmyadmin.
  • Agora precisamos baixar a última versão PMA em nosso sistema (note que você precisa wget: apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Deixe-me explicar os argumentos desse comando, -P define o caminho e "o link.zip" é atualmente (7/17/18 ) a versão mais recente do PMA. Você pode encontrar esses links AQUI .
  • Para este próximo passo que você precisa de descompactação ( apt-get install unzip): unzip phpMyAdmin-4.9.4-english.zip. Acabamos de descompactar o PMA, agora o moveremos para o seu lar final.
  • Vamos usar o cpcomando (copy) para mover nossos arquivos! Observe que temos que adicionar o -rargumento, pois esta é uma pasta. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Agora é hora de limpar: rm -rf phpMyAdmin-4.9.4-english.

Continue lendo!

Agora você pode perceber dois erros depois de fazer login no 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.

No entanto, esses problemas são relativamente fáceis de corrigir. Para a primeira edição, tudo o que você precisa fazer é pegar o editor de sua escolha e editar, /usr/share/phpmyadmin/config.inc.phpmas há um problema, nós o removemos! Tudo bem, tudo o que você precisa fazer é: cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php.

Exemplo de entrada variável secreta do 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! */

Agora salve e feche o arquivo.

  • Agora vamos criar um diretório tmp para PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. O último comando permite que o servidor da web Apache possua o diretório tmp e edite seu conteúdo.

Esta resposta foi incrivelmente útil! Resolvido o problema para mim! Obrigado! PS: Você pode encontrar geradores de blowfish online.
lucbas

E a solução neste link: devanswers.co/manually-upgrade-phpmyadmin segue um plano semelhante, exceto substitui os passos Blowfish com pequenas mudanças ..
gwideman

Esta é uma solução muito melhor em comparação com a edição de arquivos de configuração de versões anteriores.
precisa

17

Tente substituir esta função no arquivo: /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;
}

Obrigado! esta linha é onde eu estava enganado no final, onde eu tinha 3 colchetes insted, eu precisava de apenas 2 colchetes && ($ managed_sql_results ['select_expr'] [0] == '*')). Trabalhou no phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin

17

Ubuntu 18.04 LTS

Estes são os passos que funcionaram para mim. Muito obrigado a William Desportes por fornecer as atualizações automáticas no PPA do Ubuntu.

Passo 1 ( de William Desportes pós )
$sudo add-apt-repository ppa:phpmyadmin/ppa

Etapa 2
$sudo apt-get --with-new-pkgs upgrade

Etapa 3
$sudo service mysql restart

Se você tiver problemas para reiniciar o mysql, também poderá reiniciar com a seguinte sequência
$ sudo service mysql stop;
$sudo service mysql start;


2
Resolve o problema no Ubuntu 18.04 LTS. Deve ser a resposta aceita.
bgaze

15

Ubuntu 18.10 (dezembro de 2018)

Linhas 613, 614, 615, substitua por:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;

Tem funcionado para mim .. Não há necessidade de atualizar o MySQL ou qualquer coisa ... Graças @ole
Nitin Vaghani

15

Trabalhe para mim .. Ubuntu 18.04

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

Encontre o count($analyzed_sql_results['select_expr']código no arquivo. Você pode obter isso na linha ~ 613.

|| (count($analyzed_sql_results['select_expr'] == 1)

Apenas substitua pelo código:

|| ((count($analyzed_sql_results['select_expr']) == 1)

Salve o arquivo e recarregue o PhpMyAdmin.

Feito!!!


1
Na linha 613, altere para|| (count($analyzed_sql_results['select_expr']) == 1
tnductam 31/03/19

11

Na minha versão do phpmyadmin (4.6.6deb5), encontrei a linha 613 e percebi que os parênteses count () não estavam fechados corretamente. Para corrigir isso temporariamente até a próxima versão, basta alterar:

|| (count($analyzed_sql_results['select_expr'] == 1)

para:

|| (count($analyzed_sql_results['select_expr']) == 1

Havia um parêntese ausente para fechar a chamada de função || (count ($ analyzed_sql_results [ 'select_expr']) == 1 é a afirmação correta
Ruberandinda Patience

O caminho do arquivo é "/usr/share/phpmyadmin/libraries/sql.lib.php" para quem não sabe onde encontrá-lo.
Ali Imran

9

Isso foi corrigido nas versões posteriores do PHPMyAdmin. Os repositórios de software Ubuntu para Ubuntu 18.04.2 contêm a versão 4.6.6.5, enquanto estão atualmente na 4.9.0.1. A atualização da instalação do PHPMyAdmin corrigirá esse problema, mas pode ser mais arriscado do que apenas editar essa linha de código. Aqui está como eu fiz isso no meu Ubuntu Server. As etapas são essencialmente as mesmas (com um caminho diferente) para todos os sistemas operacionais.

  1. Faça o download do PHPMyAdmin .
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
  1. Faça backup da instalação antiga do PHPMyAdmin.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Solte seu novo PHPMyAdmin no seu antigo PHPMyAdmin
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Verifique se funciona. Caso contrário, você ... Você tem um backup, restaure-o e edite manualmente a linha com defeito. Em minha própria experiência pessoal, descobri depois de fazer isso que a versão 4.6.6.5 não estava apenas cheia de bugs, mas também incrivelmente lenta em comparação com a nova 4.9.0.1. O aumento de velocidade foi pura magia para algo que eu pensava ser de qualidade "WordPress".


Eu mudaria a ordem de 1 e 2, e antes do wget eu iria cd / tmp, mas, além disso, excelente, obrigado.
Chris

Isso funciona para mim, obrigado pela solução simples!
Uestcfei

8

Funciona no UBUNTU 16.04.3 Basta abrir

usr / share / libraries / sql.lib.php

modificar

|| (count($analyzed_sql_results['select_expr'] == 1)

Para

|| ((count($analyzed_sql_results['select_expr']) == 1)


5

Atualize para o phpMyAdmin 4.8.3. isso resolve os problemas de compatibilidade do PHP 7.2


5

|| ((count($analyzed_sql_results['select_expr']) == 1

Foi isso que mudei na linha 614 e o phpmyadmin funciona sem nenhum erro. Precisa de um (antes da contagem e um )antes ==. É isso aí.


4

Editar arquivo '/usr/share/phpmyadmin/libraries/sql.lib.php' Substitua: (faça backup)

"|| (count($analyzed_sql_results['select_expr'] == 1) 
&&($analyzed_sql_results['select_expr'][0] == '*'))) 
&& count($analyzed_sql_results['select_tables']) == 1;"

Com:

"|| (count($analyzed_sql_results['select_expr']) == 1) 
&& ($analyzed_sql_results['select_expr'][0] == '*') 
&& (count($analyzed_sql_results['select_tables']) == 1));"

3

Oi o seguinte resolver absolutamente meu mesmo problema (importação / exportação e assim por diante):

Correção do bug Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

então ... no ubuntu 18.04, mysql, php7.2: Terminal:

sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

Encontre a seguinte linha (ctrl + f):

if ($options != null && count($options) > 0) {

estava na linha # 551 para mim

e mude para o seguinte:

if ($options != null && count((array)$options) > 0) {

ctrl + s para salvar as alterações

e no terminal: ctrl + c para voltar promt ...

e: sudo systemctl restart apache2

"Acho que na nova versão php. Não é possível usar count () ou sizeof () com um tipo de matriz. Forçar parâmetro ao array é uma maneira fácil de resolver esse bug, ..."

Obrigado pelo autor original pela solução do problema! Eu tento compartilhar!


3

Abra o /usr/share/phpmyadmin/sql.lib.phparquivo com privilégios elevados e edite o seguinte na função PMA_isRememberSortingOrder():

  1. ~ linha 613 para corrigir o erro inicial:
    • Substituir || count($analyzed_sql_results['select_expr'] == 1)
    • Com || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ linha 614 para corrigir o erro 500 que provavelmente se seguirá:
    • Substituir && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Com && ($analyzed_sql_results['select_expr'][0] == '*'))

Reinicie o servidor Apache: sudo service apache2 restart.

Testado no Linux Mint 19.1 baseado no Ubuntu 18.04, com PhpMyAdmin 4.6.6 e PHP 7.2.


3

Eu tentei todas as soluções acima, mas não funcionou para mim.

Experimente o seguinte: -

Instale a versão necessária do PHP (no meu caso 7.0) e, em seguida, no terminal, digite

sudo update-alternatives --config php

A saída será assim: -

insira a descrição da imagem aqui

Então você pode mudar para qualquer versão do PHP simplesmente digitando o número da seleção (no meu caso 1).

Espero que isso possa ajudar outros - :)


2

Eu tive esse problema ao usar o Windows e as respostas acima o resolveram para mim, no entanto, quando mudei para o linux (ubuntu 18.04 LTS), tive o mesmo problema e não consegui descobrir como resolvê-lo porque não via o arquivo '/usr/share/phpmyadmin/libraries/sql.lib.php'.

Este arquivo sql.lib.php não estava na pasta de compartilhamento ou na pasta phpmyadmin / libraries do meu diretório / opt / lampp - desde que eu estava usando o xampp no ​​meu ubuntu. Com base na atualização feita no xampp (porque usei a instalação mais recente a partir de agora).

A resposta ainda está para substituir: (count($analyzed_sql_results['select_expr'] == 1)

Com: (count($analyzed_sql_results['select_expr']) == 1

No entanto, o arquivo a procurar é Sql.phpencontrado em/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Atualizações futuras ou se você ainda não a encontrar: use grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminpara procurar documentos correspondentes em seu diretório e editar de acordo


2

Substituir Função:

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;
}

2

Editar arquivo /usr/share/phpmyadmin/libraries/sql.lib.php

Ver um erro no seu erro

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(

vá para esta linha e remova a chamada de função.

Funciona para mim.


2

Vejo que todos vocês estão editando ou atualizando de nossos arquivos

Para quem deseja atualizações automáticas, você pode usar o nosso PPA Ubuntu

sudo add-apt-repository ppa: phpmyadmin / ppa

E para usuários do Debian, você precisará esperar pela próxima versão do Debian ou usar o PPA

O Ubuntu 20 possui o phpMyAdmin 4.9 ou uma versão posterior

Problema do Debian em nosso rastreador

Problemas contáveis ​​em nosso rastreador

Atualização do TLDR para a versão 4.9 ou 5.0 mais recente para resolver esse problema.


2

Isso funcionou bem para mim no Ubuntu 18.04 .

Abra o arquivo sql.lib.php

nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

Substitua este código errado:

|| (count($analyzed_sql_results['select_expr'] == 1)

Com este:

|| ((count($analyzed_sql_results['select_expr']) == 1)

Salve o arquivo.

Reinicie seu servidor com:

sudo service apache2 restart

E atualize o PhpMyAdmin


1

No Ubuntu 18.04 com MariaDb e Nginx, resolvi-o com a atualização do arquivo /usr/share/phpmyadmin/libraries/sql.lib.php da seguinte maneira:

|| (count($analyzed_sql_results['select_expr']) == 1

A resposta mencionada por @Nguyen gera um erro 500 dizendo:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.