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

468

J'ai téléchargé la sauvegarde dans une table, en ouvrant la table, je vois ceci:

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)

Dans phpMyAdmin ...

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

En cherchant j'ai vu que certains ont cette erreur dans leur code, mais je n'ai trouvé personne qui l'ait reçue dans phpMyAdmin ...

Que devrais-je faire? C'est mon erreur? Une erreur phpmyadmin? attendre la mise à jour? Je reviens à PHP 7.1?

Alebal
la source
9
Ceux qui sont confrontés à un problème comme: if ( count($articles)){..}dans CodeIgniter , ils devraient utiliser: if ( count((array)$articles)){..}comme ici
fWd82
2
j'ai eu ce problème sur phpmyadmin v4.6 j'ai mis à jour à 4.8 il a disparu. , il semble que cela ait quelque chose à voir avec mariadb 10.3 car je n'ai pas eu ce problème sur mariadb 10.1 avec phpmyadmin 4.6
user889030
Dans mon cas, le problème s'est produit lorsque j'avais installé php 7.3 alors que mon phpMyAdmin était 4.7.1, je suis revenu à php 7.0 et cela fonctionne bien ou vous devez installer une version de phpMyAdmin compatible avec php 7.3
vinsa

Réponses:

877

Modifiez le fichier à l' /usr/share/phpmyadmin/libraries/sql.lib.phpaide de cette commande:

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

À la ligne 613, la fonction de comptage a toujours la valeur true car il n'y a pas de parenthèse fermante après $analyzed_sql_results['select_expr']. Faire les remplacements ci-dessous résout ce problème, alors vous devrez supprimer la dernière parenthèse fermante sur la ligne 614, car c'est maintenant une parenthèse supplémentaire.

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
Jacky Nguyen
la source
95
Incroyable. Fonctionne sur Ubuntu 18.04 avec phpmyadmin installé à l'aide d'apt.
PNDA
7
A fonctionné dans la mesure où je pouvais sélectionner des tables, mais une erreur s'est
produite
30
Si vous rencontrez un problème similaire lors de l'exportation de bases de données, vous devez modifier /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, ligne 551 de if ($ options! = Null && count ($ options)> 0) {to _if ($ options! = null && count ((array) $ options)> 0) { Cela pourrait être intéressant pour @alperian et d'autres
Bernd Schuhmacher

5
Ça n'a pas marché pour moi. J'ai compris Error in processing request Error code: 500 Error text: Internal Server Error. La solution de @Chandra Nakka a résolu mon problème.
Jee

473

Méthode la plus simple:

Exécutez simplement cette ligne de commande ci-dessous dans le terminal et revenez à PhpMyAdmin. Maintenant ça marche bien :)

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

Méthode manuelle:

Ouvrez le fichier sql.lib.php

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

Recherchez le count($analyzed_sql_results['select_expr']code dans le fichier. Vous pouvez l'obtenir à la ligne ~ 613 . Vous pouvez voir ci-dessous un mauvais code

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

Remplacez simplement ce mauvais code par celui ci-dessous

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

Enregistrez le fichier et accédez à PhpMyAdmin .

Maintenant ça marche bien :)


39
Fonctionne dans Ubuntu 18.04 à août 2018 :)
Luiz Gonçalves

4
N'a pas fonctionné pour moi sur Ubuntu 16.04
SP Singh

2
Fonctionne comme un charme
Rameez Rami

2
Fonctionne sur Ubuntu 19.04. Merci
murume

4
Une petite astuce intéressante pour nano est que vous pouvez taper nano +613 filenamepour vous amener directement à la ligne spécifique.
SteffenNielsen

102

J'ai trouvé cette erreur PHP 7.2 count () - SYNTAX dans sql.lib.php

Cela 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 )

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

Modifier la ligne : déplacer les parenthèses avant ==

|| ( (count ($ analysé_sql_results ['select_expr'] ) == 1) && ($ analysé_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;
 }

Dans la ligne suivante, vous devrez également supprimer une des parenthèses fermantes à la fin.
floppes

Merci. Comment une telle erreur a-t-elle été publiée avec un package installable apt? Juste un peu ridicule.
Josh Morel

1
@floppes Non, ce n'est pas correct. Vous NE DEVEZ PAS supprimer cette parenthèse fermante. J'ai testé votre chemin et ça a causé server error. La réponse de @ loquace doit être celle qui doit être acceptée.
Long

Merci de l'avoir expliqué pour nous et d'utiliser des polices en gras là où cela est nécessaire. Ni la 1ère ni la 2ème réponse n'étaient assez claires pour moi car elles n'ont pas dit ce qu'elles faisaient. L'édition sur nano n'est pas la même chose que gedit ou autre.
logicbloke

70

testé sur Debian, devrait fonctionner sur Ubuntu:

1.) Téléchargez d'abord le dernier fichier phpMyadmin.

2.) Supprimer (faire une sauvegarde) tous les fichiers de la version précédente situés dans le /usr/share/phpmyadminrépertoire.

3.) Décompressez pour /usr/share/phpmyadmin/répertoire tous les fichiers du dernier phpmyadmin.

4.) Modifier le fichier libraries/vendor_config.phpet changer de ligne:

define('CONFIG_DIR', '');

à

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

et

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

à

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

5.) redémarrez le serveur apache et c'est fait.


3
Fonctionne sur Ubuntu 16.04
pjehan

7
Fonctionne sur Ubuntu 18.04
Simon Epskamp

5
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - J'en avais besoinmkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

Ubuntu 16.04 vient de l'extraire pour qu'il /usr/share/phpmyadminfonctionne. N'a pas eu besoin de suivre les étapes ultérieures.
tushar.dahiwale

@billynoah Idem ici avec une nouvelle installation. J'ai créé le répertoire tmp, je l'ai défini sur 777, redémarré Apache, déconnecté de phpMyAdmin et les erreurs ont disparu.
JScarry

38

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

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

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

cela a fonctionné pour moi


Cela a fonctionné pour moi en fonction de la condition où une erreur interne 500 a été corrigée, mais l'ancien problème d'erreur "phpmyadmin - count (): Le paramètre doit être un tableau ou un objet qui implémente Countable" n'est pas résolu.
shashik493

cela semble fonctionner pour moi, mais quelqu'un sait-il pourquoi cela s'est produit? Mon phpmyadmin fonctionnait très bien, puis tout à coup, je me suis connecté aujourd'hui et il semblait y avoir ce problème? Ubuntu 18.04.2 LTS
wheelmanx

Fonctionne sur UBuntu 18.04, aile 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

Cela a fonctionné pour moi le 18.04, merci! Pas même besoin de redémarrer le serveur - PHP est interprété «en direct».
Jelle Veraa

@JelleVeraa, vous êtes le cas spécial hehehe;)
kaleem

32

Si quelqu'un a une erreur similaire dans la page d'exportation de la base de données (j'ai eu ce problème dans Ubuntu 18.04), remplacez la ligne 551 du fichier /usr/share/phpmyadmin/libraries/plugin_interface.lib.phppar du code

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

Cela m'a également aidé, mais j'ai dû faire à la fois la réponse et cela. Ubuntu 18.04
Karuhanga

2
Cela a fonctionné pour se débarrasser des messages d'erreur, mais je pense que cela évite ensuite l'instruction if tous ensemble et je n'obtiens rien dans l'exportation de ma base de données (avec un tas d'erreurs s'affichant en bas après avoir actualisé la page après avoir terminé une base de données exporter avec une petite empreinte de fichier)
Warren Wang

Embrasse, embrasse, je t'aime.
Noah Krasser

1
Sur Debian 9, remplacez la ligne 551: if ($options != null && count($options) > 0) {par: if ($options != null) {alors vous pouvez exporter
BitDEVil2K16

C'est le seul qui a travaillé le 18.04
TeT Psy


24

Procédez comme suit à ubuntu-18.04:

Étape 1) localisersql.lib.php

Cela montrera quelque chose comme:

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

Étape 2) Ouvrez le terminal (Alt t) et écrivez:

sudo /usr/sbin/pma-configure

Étape 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php et recherchez ci-dessous la fonction:

 

    fonction PMA_isRememberSortingOrder ($ analyz_sql_results)
     {
        return $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analyz_sql_results ['is_count']
                || $ analyz_sql_results ['is_export']
                || $ analyz_sql_results ['is_func']
                || $ analyz_sql_results ['is_analyse'])
            && $ analyz_sql_results ['select_from']
            && ((vide ($ analyz_sql_results ['select_expr'])))
                || (count ($ analyzed_sql_results ['select_expr'] == 1)
                    && ($ analyz_sql_results ['select_expr'] [0] == '*')))
            && count ($ analyzed_sql_results ['select_tables']) == 1;
     }

Étape 4) Remplacez la fonction ci-dessus par:

     fonction PMA_isRememberSortingOrder ($ analyz_sql_results)
     {
        return $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analyz_sql_results ['is_count']
                || $ analyz_sql_results ['is_export']
                || $ analyz_sql_results ['is_func']
                || $ analyz_sql_results ['is_analyse'])
            && $ analyz_sql_results ['select_from']
            && ((vide ($ analyz_sql_results ['select_expr'])))
                || (count ($ analyz_sql_results ['select_expr']) == 1)
                    && ($ analyz_sql_results ['select_expr'] [0] == '*'))
            && count ($ analyzed_sql_results ['select_tables']) == 1;
     }

Étape 4) Enregistrer et fermer le fichier et la commande ci-dessous sur le terminal

sudo /usr/sbin/pma-secure

Étape 5) sudo service mysql reload

Étape 6) sudo service apache2 reload

Cela fonctionne pour moi .. Goodluck

Logiciel Neoark
Le rechargement de MySQL et apache n'est pas nécessaire.
Tacsiazuma
J'ai reçu ce message après des modifications de fichier: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Sécurisation de l'installation de phpMyAdmin ... - Le script d'installation ne pourra pas écrire la configuration. - root @ Lalla: ~ # "
cl-r
Vous avez simplement ajouté une accolade. Mais merci. J'ai retiré l'accolade supplémentaire à la fin de la ligne
redestructa
J'ai installé xampp sur mon mac, je ne trouve pas le dossier / usr / share / phpmyadmin et donc '/usr/share/phpmyadmin/libraries/sql.lib.php' ce dosent existe pour moi, pouvez-vous m'aider?
Saurabh Verma
Cette réponse a été incroyablement utile! Résolu le problème pour moi! Merci! PS: Vous pouvez trouver des générateurs Blowfish en ligne.
lucbas
Et la solution à ce lien: devanswers.co/manually-upgrade-phpmyadmin suit un plan similaire, sauf remplace les étapes de blowfish par des étapes plus faciles ..
gwideman
C'est une bien meilleure solution que la modification des fichiers de configuration des anciennes versions.
andromeda
Merci! cette ligne est l'endroit où je me suis trompé à la fin où j'avais 3 parenthèses fermantes. A travaillé sur phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin
2
Résout le problème sur Ubuntu 18.04 LTS. Doit être la réponse acceptée.
bgaze
Cela a fonctionné pour moi .. Pas besoin de mettre à jour mysql ou quoi que ce soit ... Merci @ole
Nitin Vaghani
1
À la ligne 613, changez pour|| (count($analyzed_sql_results['select_expr']) == 1
tnductam
Il y avait une parenthèse manquante pour fermer l'appel de fonction || (count ($ analyz_sql_results ['select_expr']) == 1 est la déclaration correcte
Ruberandinda Patience
le chemin du fichier est "/usr/share/phpmyadmin/libraries/sql.lib.php" pour ceux qui ne savent pas où le trouver.
Ali Imran
Je changerais l'ordre de 1 et 2, et avant wget je ferais du cd / tmp mais à part ça, excellent, merci.
Chris
Cela fonctionne pour moi, merci pour une solution simple!
uestcfei
22

ouvrez ce fichier: '/usr/share/phpmyadmin/libraries/sql.lib.php'

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

appuyez sur ctrl + w pour rechercher (count ($ analyz_sql_results ['select_expr'] == 1)

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

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

Redémarrez le serveur

 sudo service apache2 restart

en outre, si vous rencontrez toujours le même problème, procédez comme suit.

ouvrez ce fichier /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

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

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

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

remplacer par le code suivant

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

maintenant enregistrez et redémarrez le serveur

sudo /etc/init.d/apache2 restart
Kundan roy
la source
Vous avez simplement ajouté une accolade. Mais merci. J'ai retiré l'accolade supplémentaire à la fin de la ligne
redestructa
J'ai installé xampp sur mon mac, je ne trouve pas le dossier / usr / share / phpmyadmin et donc '/usr/share/phpmyadmin/libraries/sql.lib.php' ce dosent existe pour moi, pouvez-vous m'aider?
Saurabh Verma
18

Je pense que la meilleure option est de mettre à jour Phpmyadmin vers une version qui a déjà corrigé cela.

Jusqu'à ce qu'il soit publié en tant que deb, vous pouvez le faire comme dans la réponse @ crimson-501 que je copierai ci-dessous:

  • Votre première étape consiste à installer PMA (phpMyAdmin) à partir du repo officiel Ubuntu: apt-get install phpmyadmin.
  • Ensuite, dans le répertoire usr cd de / share: cd /usr/share.
  • Troisièmement, supprimer le répertoire phpMyAdmin: rm -rf phpmyadmin.
  • Maintenant , nous avons besoin de télécharger la dernière version PMA sur notre système (Notez que vous avez besoin wget: apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Permettez - moi de vous expliquer les arguments de cette commande, -P définit le chemin et « le link.zip » est actuellement (17.07.18 ) la dernière version de PMA. Vous pouvez trouver ces liens ICI .
  • Pour cette étape suivante , vous devez dézipper ( apt-get install unzip): unzip phpMyAdmin-4.9.4-english.zip. Nous venons de décompresser PMA, maintenant nous allons le déplacer vers sa dernière demeure.
  • Permet d'utiliser la cpcommande (copier) pour déplacer nos fichiers! Notez que nous devons ajouter l' -rargument car il s'agit d'un dossier. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Maintenant , il est temps de nettoyer: rm -rf phpMyAdmin-4.9.4-english.

Continue de lire!

Vous pouvez maintenant remarquer deux erreurs après vous être connecté à 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.

Cependant, ces problèmes sont relativement faciles à résoudre. Pour le premier problème, il vous suffit de récupérer l'éditeur de votre choix et de le modifier, /usr/share/phpmyadmin/config.inc.phpmais il y a un problème, nous l'avons supprimé! Ça va, tout ce que vous avez à faire est: cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php.

Exemple d'entrée de variable secrète 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! */

Maintenant, enregistrez et fermez le fichier.

  • Nous allons maintenant créer un répertoire tmp pour PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. La dernière commande permet au serveur Web Apache de posséder le répertoire tmp et de modifier son contenu.
PhoneixS
la source
Cette réponse a été incroyablement utile! Résolu le problème pour moi! Merci! PS: Vous pouvez trouver des générateurs Blowfish en ligne.
lucbas
Et la solution à ce lien: devanswers.co/manually-upgrade-phpmyadmin suit un plan similaire, sauf remplace les étapes de blowfish par des étapes plus faciles ..
gwideman
C'est une bien meilleure solution que la modification des fichiers de configuration des anciennes versions.
andromeda
17

Essayez de remplacer cette fonction dans le fichier: /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;
}
Oleksandr P.
la source
Merci! cette ligne est l'endroit où je me suis trompé à la fin où j'avais 3 parenthèses fermantes. A travaillé sur phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin
17

Ubuntu 18.04 LTS

Ce sont les étapes qui ont fonctionné pour moi. Merci beaucoup à William Desportes pour avoir fourni les mises à jour automatiques sur leur PPA Ubuntu.

Étape 1 ( du poste de William Desportes )
$sudo add-apt-repository ppa:phpmyadmin/ppa

Étape 2
$sudo apt-get --with-new-pkgs upgrade

Étape 3
$sudo service mysql restart

Si vous rencontrez des problèmes pour redémarrer mysql, vous pouvez également redémarrer avec la séquence suivante
$ sudo service mysql stop;
$sudo service mysql start;

C13L0
la source
2
Résout le problème sur Ubuntu 18.04 LTS. Doit être la réponse acceptée.
bgaze
15

Ubuntu 18.10 (décembre 2018)

Ligne 613, 614, 615, remplacer par:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;
olealgo
la source
Cela a fonctionné pour moi .. Pas besoin de mettre à jour mysql ou quoi que ce soit ... Merci @ole
Nitin Vaghani
15

Travaille pour moi .. Ubuntu 18.04

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

Recherchez le count($analyzed_sql_results['select_expr']code dans le fichier. Vous pouvez l'obtenir à la ligne ~ 613.

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

Remplacez simplement par du code:

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

Enregistrez le fichier et rechargez PhpMyAdmin.

Terminé!!!

Ucup Timposu
la source
1
À la ligne 613, changez pour|| (count($analyzed_sql_results['select_expr']) == 1
tnductam
11

Pour ma version de phpmyadmin (4.6.6deb5), j'ai trouvé la ligne 613 et j'ai réalisé que les parenthèses count () n'étaient pas fermées correctement. Pour résoudre ce problème temporairement jusqu'à la prochaine version, modifiez simplement:

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

à:

|| (count($analyzed_sql_results['select_expr']) == 1
JT
la source
Il y avait une parenthèse manquante pour fermer l'appel de fonction || (count ($ analyz_sql_results ['select_expr']) == 1 est la déclaration correcte
Ruberandinda Patience
le chemin du fichier est "/usr/share/phpmyadmin/libraries/sql.lib.php" pour ceux qui ne savent pas où le trouver.
Ali Imran
9

Ce problème est résolu dans les versions ultérieures de PHPMyAdmin. Les référentiels de logiciels Ubuntu pour Ubuntu 18.04.2 contiennent la version 4.6.6.5, alors qu'ils sont actuellement à 4.9.0.1. La mise à jour de votre installation PHPMyAdmin résoudra ce problème, mais pourrait s'avérer plus risquée que la simple modification d'une seule ligne de code. Voici comment je l'ai fait sur mon serveur Ubuntu. Les étapes sont essentiellement les mêmes (avec un chemin différent) pour tous les systèmes d'exploitation.

  1. Téléchargez 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. Sauvegardez votre ancienne installation PHPMyAdmin.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Déposez votre nouveau PHPMyAdmin sur votre ancien PHPMyAdmin
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Vérifiez que cela fonctionne. Si ce n'est pas le cas, eh bien ... Vous avez une sauvegarde, alors restaurez-la et modifiez manuellement la ligne défectueuse. Dans ma propre expérience personnelle, j'ai découvert après avoir fait cela que la version 4.6.6.5 était non seulement criblée de bugs, mais aussi incroyablement lente par rapport au nouveau 4.9.0.1. L'augmentation de la vitesse était pure magie pour quelque chose que je pensais être de qualité "WordPress".

NatoBoram
la source
Je changerais l'ordre de 1 et 2, et avant wget je ferais du cd / tmp mais à part ça, excellent, merci.
Chris
Cela fonctionne pour moi, merci pour une solution simple!
uestcfei
8

Fonctionne sur UBUNTU 16.04.3 Il suffit d'ouvrir

usr / share / bibliothèques / sql.lib.php

modifier

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

À

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

ibrahim.suez
la source
5

Mettez à niveau vers phpMyAdmin 4.8.3. cela résout les problèmes de compatibilité PHP 7.2

HUGO POLANCO
la source
5

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

C'est ce que j'ai changé à la ligne 614 et phpmyadmin fonctionne sans aucune erreur. Besoin d'un (avant de compter, et un )avant ==. C'est ça.

Bikram Nath
la source
4

Modifier le fichier '/usr/share/phpmyadmin/libraries/sql.lib.php' Remplacer: (faire une sauvegarde)

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

Avec:

"|| (count($analyzed_sql_results['select_expr']) == 1) 
&& ($analyzed_sql_results['select_expr'][0] == '*') 
&& (count($analyzed_sql_results['select_tables']) == 1));"
Roland Mester
la source
3

Salut les éléments suivants résolvent absolument mon même problème (import / export, etc.):

Correction d'un bug Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

donc ... sous ubuntu 18.04, mysql, php7.2: Terminal:

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

Recherchez la ligne suivante (ctrl + f):

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

c'était en ligne # 551 pour moi

et changer pour ce qui suit:

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

ctrl + s pour enregistrer les modifications

et dans le terminal: ctrl + c pour récupérer promt ...

et: sudo systemctl restart apache2

"Je pense que dans la nouvelle version de php. Il ne peut pas utiliser count () ou sizeof () avec un type de tableau. Forcer le paramètre au tableau est un moyen facile de résoudre ce bogue, ..."

Merci pour l'auteur original pour la résolution de problème! J'essaye de le partager!

Máté Kiss
la source
3

Ouvrez le /usr/share/phpmyadmin/sql.lib.phpfichier avec des privilèges élevés et modifiez les éléments suivants dans la fonction PMA_isRememberSortingOrder():

  1. ~ ligne 613 pour corriger l'erreur initiale:
    • Remplacer || count($analyzed_sql_results['select_expr'] == 1)
    • Avec || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ ligne 614 pour corriger l'erreur 500 qui suivra probablement:
    • Remplacer && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Avec && ($analyzed_sql_results['select_expr'][0] == '*'))

Redémarrez votre serveur Apache: sudo service apache2 restart.

Testé sur Linux Mint 19.1 basé sur Ubuntu 18.04, avec PhpMyAdmin 4.6.6 et PHP 7.2.

elenche
la source
3

J'ai essayé toutes les solutions ci-dessus mais je n'ai pas travaillé pour moi.

Essaye ça:-

Installez la version requise de PHP (dans mon cas 7.0) puis dans le terminal, tapez

sudo update-alternatives --config php

La sortie sera comme ceci: -

entrez la description de l'image ici

Ensuite, vous pouvez passer à n'importe quelle version de PHP en entrant simplement le numéro de sélection (dans mon cas 1).

J'espère que cela peut aider les autres - :)

Tridev Shrestha
la source
2

J'ai eu ce problème lors de l'utilisation de Windows et les réponses ci-dessus l'ont résolu pour moi, mais quand je suis passé à Linux (Ubuntu 18.04 LTS), j'ai eu le même problème et je n'ai pas pu trouver de solution car je n'ai pas vu le fichier '/usr/share/phpmyadmin/libraries/sql.lib.php'.

Ce fichier sql.lib.php n'était pas dans le dossier de partage ni dans le dossier phpmyadmin / bibliothèques de mon répertoire / opt / lampp - puisque j'utilisais xampp sur mon ubuntu. Basé sur la mise à jour apportée à la configuration de xampp (car j'ai utilisé la dernière installation à partir de maintenant).

La réponse reste à remplacer: (count($analyzed_sql_results['select_expr'] == 1)

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

Cependant, le fichier à rechercher est Sql.php trouve dans/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Mises à jour futures ou si vous ne le trouvez toujours pas: utilisez grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminpour rechercher les documents correspondants dans votre répertoire et modifiez-les en conséquence

KingNonso
la source
2

Remplacer la fonction:

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;
}
Arcaela
la source
2

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

Voir une erreur sur votre erreur

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

accédez à cette ligne et supprimez l'appel de fonction.

Ça marche pour moi.

amrit
la source
2

Je constate que vous modifiez ou mettez à jour tous nos fichiers

Pour ceux qui veulent des mises à jour automatiques, vous pouvez utiliser notre PPA Ubuntu

sudo add-apt-repository ppa: phpmyadmin / ppa

Et pour les utilisateurs de Debian, vous devrez attendre la prochaine version de Debian ou utiliser PPA

Ubuntu 20 a phpMyAdmin 4.9 ou une version ultérieure

Problème Debian sur notre tracker

Problèmes dénombrables sur notre tracker

Mise à jour TLDR vers la dernière version 4.9 ou 5.0 pour résoudre ce problème.

William Desportes
la source
2

Cela a bien fonctionné pour moi sur Ubuntu 18.04 .

Ouvrez le fichier sql.lib.php

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

Remplacez ce mauvais code:

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

Avec celui-ci:

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

Enregistrez le fichier.

Redémarrez votre serveur avec:

sudo service apache2 restart

Et rafraîchissez PhpMyAdmin

FEUJIO Marie Therese
la source
1

Sur Ubuntu 18.04 avec MariaDb et Nginx, je l'ai résolu avec la mise à jour du fichier /usr/share/phpmyadmin/libraries/sql.lib.php comme suit:

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

La réponse mentionnée par @Nguyen renvoie une erreur de 500 disant:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
cwhisperer
la source