582 votes

phpmyadmin - compter(): Le paramètre doit être un tableau ou un objet qui implémente Countable

J'ai téléchargé la sauvegarde sur une table, l'ouverture de la table, je vois ceci:

À l'intérieur phpMyAdmin...

PHP est 7.2, le serveur est Ubuntu 16.04, installé hier.

Vous cherchez, j'ai vu que certains ont cette erreur dans leur code, mais je n'ai pas trouvé quelqu'un qui l'a reçu en phpMyAdmin ...

Qu'est-ce que je dois faire ? C'est mon erreur ? Une erreur de phpmyadmin ? mise à jour d'attente ? Je retourne à PHP 7.1?

1116voto

Jacky Nguyen Points 6561

Modifier le fichier /usr/share/phpmyadmin/libraries/sql.lib.php:

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

Sur la ligne 613 la fonction count renvoie toujours vrai car il n'y a pas de parenthèse fermante après $analyzed_sql_results['select_expr']. Faire le dessous de remplacements résout ce, alors vous aurez besoin de supprimer la dernière parenthèse fermante à la ligne 614, comme c'est aujourd'hui une parenthèse supplémentaires.

Remplacer:

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

Avec:

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

Redémarrez le serveur apache:

sudo service apache2 restart

657voto

Nakka Chandra Points 1

Méthode La Plus Simple:

Lancez-le en dessous de la ligne de commande dans le terminal et de revenir à PhpMyAdmin. Maintenant, il fonctionne très bien :)

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

Méthode Manuelle:

Ouvert sql.lib.php fichier

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

Trouver pour count($analyzed_sql_results['select_expr'] code sur le fichier. Vous pouvez obtenir ce à la ligne ~613. Vous pouvez le voir ci-dessous un mauvais code

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

Il suffit de remplacer ce qui cloche avec ce code ci-dessous un

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

Enregistrez le fichier et d'en venir à PhpMyAdmin.

Maintenant, il fonctionne très bien :)

112voto

loquace Points 860

J'ai trouvé ce PHP 7.2 count() - erreur de SYNTAXE dans l'sql.lib.php

Qui fonctionne parfaitement sur ma config:

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

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

Modifiez la ligne: Déplacer parenthèse avant ==

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

dans

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

73voto

shibby Points 701

testé sur une Debian, il fonctionne sur Ubuntu:

1.) D'abord téléchargez la dernière version de phpMyadmin fichier.

2.) Supprimer (faire une sauvegarde) tous les fichier d'une version antérieure situé en /usr/share/phpmyadmin répertoire.

3.) Décompresser à l' /usr/share/phpmyadmin/ répertoire de tous les fichiers de la dernière version de phpmyadmin.

4.) Modifier le fichier libraries/vendor_config.php et modifier la ligne:

define('CONFIG_DIR', '');

pour

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

et

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

pour

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

5.) redémarrez le serveur apache et fait.

42voto

Srikanth Ponnuru Points 361

Modifier le fichier:``

Remplacer:``

Avec:``

cela a fonctionné pour moi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X