update - phpmyadmin-count(): el parámetro debe ser una matriz o un objeto que implemente Contable
warning in./libraries/sql.lib.php#613 ubuntu (30)
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
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?
Método más fácil:
Simplemente ejecute esta línea de comando debajo de 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
Busque el código
count($analyzed_sql_results[''select_expr'']
en el archivo. Puede obtener esto en la línea ~
613.
Puede 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 :)
Abra el archivo
/usr/share/phpmyadmin/sql.lib.php
con privilegios elevados y edite lo siguiente en la función
PMA_isRememberSortingOrder()
:
-
~ línea 613 para corregir el error inicial:
-
Reemplazar
|| count($analyzed_sql_results[''select_expr''] == 1)
|| count($analyzed_sql_results[''select_expr''] == 1)
-
Con
|| (count($analyzed_sql_results[''select_expr'']) == 1)
|| (count($analyzed_sql_results[''select_expr'']) == 1)
-
Reemplazar
-
~ 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] == ''*''))
-
Reemplazar
Reinicie su 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.
Actualice a phpMyAdmin 4.8.3. esto resuelve los problemas de compatibilidad de PHP 7.2
Como el error en el código en el archivo conf puede variar (@Jacky Nguyen vs @ ĦΔŇĐŘΔ ŇΔҜҜΔ responde),
la respuesta
general a la solución
sería
a) corrija la lógica de condición en el archivo conf para que tenga sentido
(x) ob) instalar phpmyadmin corregido / actual
En cuanto a a)
-
abre el archivo con código de error
Para las personas terminales:sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
Para la gente normal:sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php
-
encuentre la condición - básicamente busque
$analyzed_sql_results[''select_expr'']
-
ahora la lógica debería ser verificar si esta matriz secundaria está vacía o si solo tiene 1 elemento con un valor "
*
-
así que básicamente el bloque
entre&& $analyzed_sql_results[''select_from'']
y&& count($analyzed_sql_results[''select_tables'']) == 1
debería verse así
&& ( 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 "*" ) )
Este es un buen ejemplo de por qué sangrar y embellecer su código, si estuviera indentado correctamente, creo que esto nunca sucedería, o al menos, sería más fácil de encontrar.
Continúe siguiendo los pasos en ubuntu-18.04:
Paso 1)
ubica
sql.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:
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; }
Paso 4) Reemplace la función anterior con:
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; }
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
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:
-
Su primer paso es instalar PMA (phpMyAdmin) desde el repositorio oficial de Ubuntu:
apt-get install phpmyadmin
. -
Luego, cd en el directorio usr / share:
cd /usr/share
. -
Tercero, elimine el directorio phpmyadmin:
rm -rf phpmyadmin
. -
Ahora necesitamos descargar la última versión de PMA en nuestro sistema (tenga en cuenta que necesita wget:
apt-get install wget
):wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-english.zip"
Permítanme explicar los argumentos de este comando, -P define la ruta y" link.zip "es actualmente (17/07/18) la última versión de PMA. Puedes encontrar esos enlaces HERE . -
Para el siguiente paso necesita descomprimir (
apt-get install unzip
):unzip phpMyAdmin-4.8.2-english.zip
. Acabamos de descomprimir PMA, ahora lo trasladaremos a su hogar final. -
¡Usemos el comando
cp
(copiar) para mover nuestros archivos! Tenga en cuenta que tenemos que agregar el argumento-r
ya que esta es una carpeta.cp -r phpMyAdmin-4.8.2-english phpmyadmin
. -
Ahora es el momento de limpiar:
rm -rf phpMyAdmin-4.8.2-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 editar
/usr/share/phpmyadmin/config.inc.php
pero hay un problema, ¡lo eliminamos!
Está bien, todo lo que tiene que hacer es:
cd /usr/share/phpmyadmin
&
cp config.sample.inc.php config.inc.php
.
-
¡Ahora agregaremos nuestro Blowfish Secret!
nano config.inc.php
y copie el secreto generado dinámicamente desde el final de esta página: https://www.question-defense.com/tools/phpmyadmin-blowfish-secret-generator .
Ejemplo de entrada 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.
Echa un vistazo: https://devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/
En primer lugar, haga una copia de seguridad de sql.lib.php antes de editar. Edite sql.lib.php en nano.
$ sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
Presione CTRL + W y busque (cuenta ($ analyst_sql_results [''select_expr''] == 1)
Reemplácelo con ((count ($ analyted_sql_results [''select_expr'']) == 1)
Guardar archivo y salir. (Presione CTRL + X, presione Y y presione ENTRAR)
Edite el archivo
/usr/share/phpmyadmin/libraries/sql.lib.php
:
sudo nano /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 de
$analyzed_sql_results[''select_expr'']
.
Hacer los reemplazos a continuación resuelve esto, entonces necesitará 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
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));"
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"
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 )
Abra
/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;
}
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.
- 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
- Haga una copia de seguridad de su antigua instalación PHPMyAdmin.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
- 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".
Función is_countable introducida en (PHP 7> = 7.3.0)
is_countable: verifique que el contenido de una variable sea un valor contable.
use esta función de la siguiente manera ::
is_countable ( $var )
Devolverá un valor booleano. Para obtener más detalles, visite http://php.net/manual/en/function.is-countable.php
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)
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!
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í: -
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 - :)
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;
}
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
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;
}
Se supone que phpmyadmin 4.7.4 "solucionó varios problemas de compatibilidad con PHP 7.2"
Lo más probable es que tenga una versión anterior de phpmyadmin.
https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/
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.php
con código
if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {
Trabaja para mí .. Ubuntu 18.04
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
Busque el código de
count($analyzed_sql_results[''select_expr'']
en el archivo. Puede obtenerlo 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!!!
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. Según la actualización realizada en la configuración de xampp (porque usé la última instalación hasta ahora).
La respuesta todavía es reemplazar:
(count($analyzed_sql_results[''select_expr''] == 1)
Con:
(count($analyzed_sql_results[''select_expr'']) == 1
Sin embargo, el archivo a buscar es
Sql.php
encuentra 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/phpmyadmin
para buscar documentos coincidentes en su directorio y edite en consecuencia
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;
ninguna de estas soluciones funcionó para mí, necesita actualizar phpmyadmin a la última, siga las instrucciones aquí
https://askubuntu.com/questions/947805/how-to-upgrade-phpmyadmin-revisited
probado en Debian, debería funcionar en Ubuntu:
1.) Primero descargue el último archivo phpMyadmin.
2.) Elimine (haga una copia de seguridad) todo el archivo de versión anterior ubicado en el directorio
/usr/share/phpmyadmin
.
3.) Descomprima al directorio
/usr/share/phpmyadmin/
todos los archivos de la última versión de phpmyadmin.
4.) Modifique las
libraries/vendor_config.php
archivos
libraries/vendor_config.php
y cambie la 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.
|| ((count($analyzed_sql_results[''select_expr'']) == 1
Esto es lo que cambié en la línea 614 y phpmyadmin funciona sin ningún error.
Necesita uno
(
antes de contar y uno
)
antes
==
.
Eso es.
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í
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