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

Resuelto alebal asked hace 54 años • 0 respuestas

He subido la copia de seguridad a una tabla, al abrir 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 haya recibido en phpMyAdmin...

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

alebal avatar Jan 01 '70 08:01 alebal
Aceptado

Edite el archivo /usr/share/phpmyadmin/libraries/sql.lib.phpusando 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 ningún paréntesis de cierre después $analyzed_sql_results['select_expr']. Hacer los siguientes reemplazos resuelve este problema; 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
Jacky Nguyen avatar Mar 26 '2018 03:03 Jacky Nguyen

El método más fácil:

Simplemente ejecute la siguiente línea de comando en la terminal y regrese a PhpMyAdmin.

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

Busque count($analyzed_sql_results['select_expr']el 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 el siguiente

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

Guarde el archivo y acceda a PhpMyAdmin .

Temüjin avatar May 25 '2018 19:05 Temüjin

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 de ==

|| ( (count($analyzed_sql_results['select_expr'] ) == 1) && ($analyzed_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;
 }
loquace avatar Mar 24 '2018 10:03 loquace

probado en Debian, debería funcionar en Ubuntu:

1.) Primero descargue el último archivo phpMyadmin.

2.) Elimine (haga una copia de seguridad) todos los archivos de la versión anterior ubicados en /usr/share/phpmyadminel directorio.

3.) Descomprima en el /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.

shibby avatar Feb 08 '2018 10:02 shibby