phpmyadmin - count(): El parámetro debe ser una matriz o un objeto que implemente Countable
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?
Edite el archivo /usr/share/phpmyadmin/libraries/sql.lib.php
usando 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
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 .
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;
}
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/phpmyadmin
el directorio.
3.) Descomprima en el /usr/share/phpmyadmin/
directorio todos los archivos del último phpmyadmin.
4.) Modificar archivo libraries/vendor_config.php
y 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.