phpmyadmin - count (): el parámetro debe ser una matriz o un objeto que implemente Contable


468

He cargado la copia de seguridad en una tabla, abriendo la tabla, veo esto:

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)

Dentro de phpMyAdmin ...

PHP es 7.2, el servidor es Ubuntu 16.04, instalado ayer.

Buscando, vi que algunos tienen este error en su código, pero no encontré a nadie que lo recibió en phpMyAdmin ...

¿Qué tengo que hacer? ¿Ese es mi error? ¿Un error de phpmyadmin? esperar actualización? Vuelvo a PHP 7.1?


99
Aquellos que enfrentan problemas como: if ( count($articles)){..}en CodeIgniter , deberían usar: if ( count((array)$articles)){..}como aquí
fWd82

2
Tuve este problema en phpmyadmin v4.6 que actualicé a 4.8 desapareció. , parece que tiene algo que ver con mariadb 10.3 ya que no tuve ese problema en mariadb 10.1 con phpmyadmin 4.6
user889030

En mi caso, el problema ocurrió cuando instalé php 7.3 mientras mi phpMyAdmin era 4.7.1, volví a php 7.0 y funciona bien o debería instalar la versión de phpMyAdmin compatible con php 7.3
vinsa

Respuestas:


877

Edite el archivo /usr/share/phpmyadmin/libraries/sql.lib.phpcon este comando:

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

En la línea 613, la función de conteo siempre se evalúa como verdadera ya que no hay paréntesis de cierre después $analyzed_sql_results['select_expr'] . Hacer los reemplazos a continuación resuelve esto, luego deberá eliminar el último paréntesis de cierre en la línea 614, ya que ahora es un paréntesis adicional.

Reemplazar:

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

Con:

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

Reinicie el servidor apache:

sudo service apache2 restart

95
Increíble. Funciona en Ubuntu 18.04 con phpmyadmin instalado usando apt.
PNDA

77
Trabajé en que podía seleccionar tablas, pero el error regresó cuando intenté exportar Db
Alperian

66
Se ha informado de un error
Herbert

30
Si enfrenta un problema similar en la exportación de base de datos, debe editar /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, línea 551 desde if ($ options! = Null && count ($ options)> 0) {a _if ($ options! = null && count ((array) $ options)> 0) { Puede ser interesante para @alperian y otros
Bernd Schuhmacher

55
Esto no funcionó para mí. Llegué Error in processing request Error code: 500 Error text: Internal Server Error. La solución de @Chandra Nakka solucionó mi problema.
Jee

473

Método más fácil:

Simplemente ejecute la siguiente línea de comando en la terminal y regrese a PhpMyAdmin. Ahora funciona bien :)

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

Método manual:

Abra el archivo sql.lib.php

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

Encuentre el count($analyzed_sql_results['select_expr']código en el archivo. Puede obtener esto en la línea ~ 613 . Puedes ver esto debajo del código incorrecto

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

Simplemente reemplace ese código incorrecto con este debajo de uno

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

Guarda el archivo y ve a PhpMyAdmin .

Ahora funciona bien :)


39
Funciona en Ubuntu 18.04 en agosto de 2018 :)
Luiz Gonçalves

44
No funcionó para mí en Ubuntu 16.04
SP Singh

2
Funciona como encanto
Rameez Rami

2
Funciona en Ubuntu 19.04. Gracias
murume

44
Un pequeño truco para nano es que puedes escribir nano +613 filenamepara llevarte directamente a la línea específica.
SteffenNielsen

102

Encontré este PHP 7.2 count () - Error de SINTAXIS en sql.lib.php

Eso funciona perfectamente en mi configuración:

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

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

Cambiar línea : mover paréntesis antes ==

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

en

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

En la siguiente línea también tendrá que eliminar una de las parálisis de cierre al final.
floppes

Gracias. ¿Cómo se liberó tal error con un paquete instalable apto? Solo un poco ridículo.
Josh Morel

1
@floppes No, no es correcto. NO DEBE eliminar esa parálisis de cierre. He probado tu camino y ha causado server error. La respuesta de @loquace debe ser la aceptada.
Largo

Gracias por deletrearnos y utilizar fuentes en negrita donde sea necesario. Ni la primera ni la segunda respuesta fueron lo suficientemente claras para mí porque no dijeron lo que estaban haciendo. Editar en nano no es lo mismo que gedit o lo que sea.
logicbloke

70

probado en Debian, debería funcionar en Ubuntu:

1.) Primero descargue el último archivo phpMyadmin.

2.) Eliminar (hacer una copia de seguridad) todo el archivo de versión anterior ubicado en el /usr/share/phpmyadmindirectorio.

3.) Descomprima al /usr/share/phpmyadmin/directorio todos los archivos del último phpmyadmin.

4.) Modificar archivo libraries/vendor_config.phpy cambiar línea:

define('CONFIG_DIR', '');

a

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

y

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

a

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

5.) reinicie el servidor apache y listo.


3
Funciona en Ubuntu 16.04
pjehan

77
Funciona en Ubuntu 18.04
Simon Epskamp

55
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - necesitaba hacerlomkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

Ubuntu 16.04 solo lo extrajo para que /usr/share/phpmyadminfuncione. No necesitaba seguir los pasos posteriores.
tushar.dahiwale

@billynoah Lo mismo aquí con nueva instalación. Creé el directorio tmp, lo configuré en 777, reinicié Apache, cerré sesión en phpMyAdmin y los errores desaparecieron.
JScarry

38

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

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

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

esto funcionó para mí


Me funcionó en función de la condición que haya solucionado. Se solucionó el error interno 500, pero no se resolvió el problema de error anterior "phpmyadmin - count (): El parámetro debe ser una matriz o un objeto que implemente Contable".
shashik493

Esto parece funcionar para mí, pero ¿alguien sabe por qué sucedió esto? Mi phpmyadmin funcionaba bien y de repente me conecté hoy y parecía tener este problema. Ubuntu 18.04.2 LTS
wheelsmanx

Funciona en 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

Esto funcionó para mí el 18.04, ¡gracias! Ni siquiera es necesario reiniciar el servidor: PHP se interpreta "en vivo".
Jelle Veraa

@JelleVeraa, Tú eres el caso especial jejeje;)
kaleem

32

Si alguien tiene un error similar en la página de exportación de DB (tuve este problema en Ubuntu 18.04), reemplace la línea 551 en el archivo /usr/share/phpmyadmin/libraries/plugin_interface.lib.phpcon el código

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

Esto también me ayudó, pero tenía que hacer la respuesta y esto. Ubuntu 18.04
Karuhanga

2
Esto funcionó para deshacerse de los mensajes de error, pero creo que luego evita la declaración if por completo y no obtengo nada en la exportación de mi base de datos (con un montón de errores que se muestran en la parte inferior después de actualizar la página al completar una base de datos exportar con una pequeña huella de archivo)
Warren Wang

Beso beso te amo
Noah Krasser

1
En Debian 9 reemplace la línea 551: if ($options != null && count($options) > 0) {con: if ($options != null) {entonces puede exportar
BitDEVil2K16

Este es el único que funcionó el 18.04
TeT Psy


24

Continúe siguiendo los pasos en ubuntu-18.04:

Paso 1) ubicarsql.lib.php

Mostrará algo como:

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

Paso 2) Abra la terminal (Alt t) y escriba:

sudo /usr/sbin/pma-configure

Paso 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php y busque la siguiente función:

 

    función PMA_isRememberSortingOrder ($ analyst_sql_results)
     {
        return $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analyst_sql_results ['is_count']
                || $ analyted_sql_results ['is_export']
                || $ analyted_sql_results ['is_func']
                || $ analyted_sql_results ['is_analyse'])
            && $ analyted_sql_results ['select_from']
            && ((vacío ($ analyst_sql_results ['select_expr']))
                || (cuenta ($ analyst_sql_results ['select_expr'] == 1)
                    && ($ analyted_sql_results ['select_expr'] [0] == '*')))
            && count ($ analyted_sql_results ['select_tables']) == 1;
     }

Paso 4) Reemplace la función anterior con:

     función PMA_isRememberSortingOrder ($ analyst_sql_results)
     {
        return $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analyst_sql_results ['is_count']
                || $ analyted_sql_results ['is_export']
                || $ analyted_sql_results ['is_func']
                || $ analyted_sql_results ['is_analyse'])
            && $ analyted_sql_results ['select_from']
            && ((vacío ($ analyst_sql_results ['select_expr']))
                || (cuenta ($ analyst_sql_results ['select_expr']) == 1)
                    && ($ analyst_sql_results ['select_expr'] [0] == '*'))
            && count ($ analyted_sql_results ['select_tables']) == 1;
     }

Paso 4) Guardar y cerrar el archivo y debajo del comando en la terminal

sudo /usr/sbin/pma-secure

Paso 5) sudo service mysql reload

Paso 6) sudo service apache2 reload

Funciona para mí .. Buena suerte


El MySQL y la recarga de Apache no son necesarios.
Tacsiazuma el

Recibí este mensaje después de las modificaciones del archivo: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Asegurando la instalación de phpMyAdmin ... - El script de configuración no podrá escribir la configuración. - root @ Lalla: ~ # "
cl-r

22

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

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

presione ctrl + w para buscar (cuenta ($ analyst_sql_results ['select_expr'] == 1)

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

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

Reiniciar el servidor

 sudo service apache2 restart

Además, si aún enfrenta el mismo problema, haga lo siguiente.

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

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

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

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

reemplazar con el siguiente código

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

ahora guarde y reinicie el servidor

sudo /etc/init.d/apache2 restart

Simplemente agregaste una llave. Pero gracias.
Quité

Tengo instalado xampp en mi Mac, no pude encontrar la carpeta / usr / share / phpmyadmin y, por lo tanto, '/usr/share/phpmyadmin/libraries/sql.lib.php' esta dosis no existe para mí, ¿pueden ayudarme?
Saurabh Verma

18

Creo que la mejor opción es actualizar Phpmyadmin a una versión que ya lo haya solucionado.

Hasta que se publique como deb, puede hacerlo como en la respuesta @ crimson-501 que copiaré a continuación:

  • El primer paso es instalar PMA (phpMyAdmin) desde el repositorio oficial de Ubuntu: apt-get install phpmyadmin.
  • A continuación, cd en el directorio usr / share: cd /usr/share.
  • En tercer lugar, eliminar el directorio phpmyadmin: rm -rf phpmyadmin.
  • Ahora tenemos que descargar la última versión de PMA en nuestro sistema (en cuenta que necesita wget: apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Voy a explicar los argumentos de este comando, -P define la ruta y "el link.zip" es actualmente (07/17/18 ) la última versión de PMA. Puedes encontrar esos enlaces AQUÍ .
  • Para el siguiente paso necesitas descomprimir ( apt-get install unzip):unzip phpMyAdmin-4.9.4-english.zip . Acabamos de descomprimir PMA, ahora lo trasladaremos a su hogar final.
  • ¡Usemos el cpcomando (copiar) para mover nuestros archivos! Tenga en cuenta que tenemos que agregar el -rargumento ya que esta es una carpeta. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Ahora es el momento de limpiar: rm -rf phpMyAdmin-4.9.4-english.

¡Sigue leyendo!

Ahora puede notar dos errores después de iniciar sesión en 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.

Sin embargo, estos problemas son relativamente fáciles de solucionar. Para el primer problema, todo lo que tiene que hacer es tomar el editor de su elección y editarlo, /usr/share/phpmyadmin/config.inc.phppero hay un problema, lo eliminamos Está bien, todo lo que tienes que hacer es: cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php.

Ejemplo de entrada de variable secreta 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! */

Ahora guarde y cierre el archivo.

  • Ahora crearemos un directorio tmp para PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. El último comando permite que el servidor web Apache sea el propietario del directorio tmp y edite su contenido.

¡Esta respuesta ha sido increíblemente útil! ¡Resolvió el problema para mí! ¡Gracias! PD: Puedes encontrar generadores de pez globo en línea.
lucbas

Y la solución en este enlace: devanswers.co/manually-upgrade-phpmyadmin sigue un plan similar, excepto que reemplaza los pasos del
pez globo por

Esta es una solución mucho mejor en comparación con la edición de archivos de configuración de versiones anteriores.
andromeda

17

Intente reemplazar esta función en el archivo: /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;
}

¡Gracias! esta línea es donde me equivoqué al final, donde tenía 3 corchetes de cierre inscritos, solo necesitaba 2 corchetes de cierre && ($ analyted_sql_results ['select_expr'] [0] == '*')). Trabajó en phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin el

17

Ubuntu 18.04 LTS

Estos son los pasos que funcionaron para mí. Muchas, muchas gracias a William Desportes por proporcionar las actualizaciones automáticas en su PPA de Ubuntu.

Paso 1 ( de la publicación de William Desportes )
$sudo add-apt-repository ppa:phpmyadmin/ppa

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

Paso 3
$sudo service mysql restart

Si tiene problemas para reiniciar mysql, también puede reiniciar con la siguiente secuencia
$ sudo service mysql stop;
$sudo service mysql start;


2
Resuelve el problema en Ubuntu 18.04 LTS. Debería ser la respuesta aceptada.
Bgaze

15

Ubuntu 18.10 (diciembre de 2018)

Línea 613, 614, 615, reemplace con:

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

A mí me funcionó ... No es necesario actualizar mysql ni nada ... Gracias @ole
Nitin Vaghani

15

Trabaja para mí .. Ubuntu 18.04

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

Encuentre el count($analyzed_sql_results['select_expr']código en el archivo. Puede obtener esto en la línea ~ 613.

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

Simplemente reemplace con el código:

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

Guarde el archivo y vuelva a cargar PhpMyAdmin.

¡¡¡Hecho!!!


1
En la línea 613, cambie a|| (count($analyzed_sql_results['select_expr']) == 1
tnductam el

11

Para mi versión de phpmyadmin (4.6.6deb5), encontré la línea 613 y me di cuenta de que los paréntesis count () no se cerraron correctamente. Para arreglar esto temporalmente hasta la próxima versión, simplemente cambie:

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

a:

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

Faltaba un paréntesis para cerrar la llamada a la función || (cuenta ($ analyst_sql_results ['select_expr']) == 1 es la declaración correcta
Ruberandinda Paciencia

la ruta del archivo es "/usr/share/phpmyadmin/libraries/sql.lib.php" para aquellos que no saben dónde encontrarla.
Ali Imran

9

Esto se soluciona en versiones posteriores de PHPMyAdmin. Los repositorios de software de Ubuntu para Ubuntu 18.04.2 tienen la versión 4.6.6.5, mientras que actualmente están en 4.9.0.1. La actualización de su instalación de PHPMyAdmin solucionará este problema, pero podría resultar más riesgoso que simplemente editar esa línea de código. Así es como lo hice en mi servidor Ubuntu. Los pasos son esencialmente los mismos (con una ruta diferente) para todos los sistemas operativos.

  1. Descargar 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. Haga una copia de seguridad de su antigua instalación PHPMyAdmin.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Coloque su nuevo PHPMyAdmin en su antiguo PHPMyAdmin
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Verifica que funcione. Si no es así, bueno ... Tiene una copia de seguridad, así que restaure y edite manualmente la línea defectuosa. En mi propia experiencia personal, descubrí después de hacer esto que la versión 4.6.6.5 no solo estaba plagada de errores, sino que también era increíblemente lenta en comparación con la nueva 4.9.0.1. El aumento de velocidad fue pura magia para algo que pensé que era de calidad "WordPress".


Cambiaría el orden de 1 y 2, y antes de wget haría cd / tmp pero aparte de eso, excelente, gracias.
Chris

Esto funciona para mí, ¡gracias por una solución simple!
uestcfei

8

Funciona en UBUNTU 16.04.3 Solo abre

usr / share / bibliotecas / sql.lib.php

modificar

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

A

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


5

Actualice a phpMyAdmin 4.8.3. esto resuelve los problemas de compatibilidad de PHP 7.2


5

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

Esto es lo que cambié en la línea 614 y phpmyadmin funciona sin ningún error. Necesito uno (antes de contar, y uno )antes ==. Eso es.


4

Edite el archivo '/usr/share/phpmyadmin/libraries/sql.lib.php' Reemplace: (haga una copia de seguridad)

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

Con:

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

3

Hola, los siguientes resuelven mi mismo problema absolutamente (importación / exportación, etc.):

Fix Bug Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

entonces ... bajo ubuntu 18.04, mysql, php7.2: Terminal:

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

Encuentre la siguiente línea (ctrl + f):

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

estaba en la línea # 551 para mí

y cambiar por lo siguiente:

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

Ctrl + s para guardar los cambios

y en la terminal: ctrl + c para volver pronto ...

y: sudo systemctl restart apache2

"Creo que en la nueva versión de php. No se puede usar count () o sizeof () con un tipo de matriz. Forzar parámetro a matriz es una manera fácil de resolver este error, ..."

¡Gracias por el autor original por la resolución del problema! ¡Intento compartirlo!


3

Abra el /usr/share/phpmyadmin/sql.lib.phparchivo con privilegios elevados y edite lo siguiente en la función PMA_isRememberSortingOrder():

  1. ~ línea 613 para corregir el error inicial:
    • Reemplazar || count($analyzed_sql_results['select_expr'] == 1)
    • Con || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ línea 614 para corregir el error 500 que probablemente seguirá:
    • Reemplazar && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Con && ($analyzed_sql_results['select_expr'][0] == '*'))

Reiniciar el servidor Apache: sudo service apache2 restart.

Probado en Linux Mint 19.1 basado en Ubuntu 18.04, con PhpMyAdmin 4.6.6 y PHP 7.2.


3

Intenté toda la solución anterior pero no funcionó para mí.

Prueba esto:-

Instale la versión requerida de PHP (en mi caso 7.0) y luego en la terminal, escriba

sudo update-alternatives --config php

La salida será así: -

ingrese la descripción de la imagen aquí

Luego puede cambiar a cualquier versión de PHP simplemente ingresando el número de selección (en mi caso 1).

Espero que esto pueda ayudar a otros - :)


2

Tuve este problema al usar Windows y las respuestas anteriores me lo resolvieron, sin embargo, cuando cambié a Linux (ubuntu 18.04 LTS) tuve el mismo problema y no pude encontrar la manera de resolverlo porque no vi el archivo '/usr/share/phpmyadmin/libraries/sql.lib.php'.

Este archivo sql.lib.php no estaba en la carpeta compartida ni en la carpeta phpmyadmin / collections de mi directorio / opt / lampp, ya que estaba usando xampp en mi ubuntu. Basado en la actualización realizada a la configuración de xampp (porque usé la última instalación a partir de ahora).

La respuesta aún está por reemplazar: (count($analyzed_sql_results['select_expr'] == 1)

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

Sin embargo, el archivo a buscar se Sql.phpencuentra en/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Actualizaciones futuras o si aún no lo encuentra: use grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminpara buscar documentos coincidentes en su directorio y edite en consecuencia


2

Reemplazar función:

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 archivo /usr/share/phpmyadmin/libraries/sql.lib.php

Ver un error en su error

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

vaya a esta línea y elimine la llamada a la función.

Esto funciona para mi.


2

Veo que todos están editando o actualizando desde nuestros archivos

Para aquellos que desean actualizaciones automáticas, pueden usar nuestro PPA de Ubuntu

sudo add-apt-repository ppa: phpmyadmin / ppa

Y para los usuarios de Debian, deberá esperar la próxima versión de Debian o usar PPA

Ubuntu 20 tiene phpMyAdmin 4.9 o una versión posterior

Problema de Debian en nuestro rastreador

Problemas contables en nuestro rastreador

Actualización de TLDR a la última versión 4.9 o 5.0 para resolver este problema.


2

Esto funcionó bien para mí en Ubuntu 18.04 .

Abra el archivo sql.lib.php

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

Reemplace este código incorrecto:

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

Con este:

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

Guarda el archivo.

Reinicie su servidor con:

sudo service apache2 restart

Y actualiza PhpMyAdmin


1

En Ubuntu 18.04 con MariaDb y Nginx, lo resolví actualizando el archivo /usr/share/phpmyadmin/libraries/sql.lib.php de la siguiente manera:

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

La respuesta mencionada por @Nguyen arroja un error 500 diciendo:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.