phpmyadmin - count (): Der Parameter muss ein Array oder ein Objekt sein, das Countable implementiert

467

Ich habe das Backup in eine Tabelle hochgeladen und die folgende Tabelle geöffnet:

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)

Innerhalb von phpMyAdmin ...

PHP ist 7.2, der Server ist Ubuntu 16.04, gestern installiert.

Auf der Suche habe ich gesehen, dass einige diesen Fehler in ihrem Code haben, aber ich habe niemanden gefunden, der ihn in phpMyAdmin erhalten hat ...

Was sollte ich tun? Ist das mein Fehler? Ein phpmyadmin Fehler? Update warten? Ich gehe zurück zu PHP 7.1?

Alebal
quelle
9
Diejenigen, die Probleme haben wie: if ( count($articles)){..}in CodeIgniter , sollten sie verwenden: if ( count((array)$articles)){..}wie hier
fWd82
2
Ich hatte dieses Problem auf phpmyadmin v4.6. Ich habe es auf 4.8 aktualisiert. Es ist verschwunden. , sieht so aus, als hätte es etwas mit Mariadb 10.3 zu tun, da ich dieses Problem auf Mariadb 10.1 mit phpmyadmin 4.6
user889030 am
In meinem Fall trat das Problem auf, als ich PHP 7.3 installiert hatte, während mein PHPMyAdmin 4.7.1 war. Ich wechselte zurück zu PHP 7.0 und es funktioniert einwandfrei oder Sie sollten die Version von PHPMyAdmin installieren, die mit PHP 7.3 kompatibel ist
vinsa

Antworten:

875

Bearbeiten Sie die Datei /usr/share/phpmyadmin/libraries/sql.lib.phpmit diesem Befehl:

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

In Zeile 613 wird die Zählfunktion immer als wahr ausgewertet, da danach keine schließende Klammer mehr vorhanden ist $analyzed_sql_results['select_expr']. Wenn Sie die folgenden Ersetzungen vornehmen, wird dies behoben. Anschließend müssen Sie die letzte schließende Klammer in Zeile 614 löschen, da es sich nun um eine zusätzliche Klammer handelt.

Ersetzen:

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

Mit:

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

Starten Sie den Server-Apache neu:

sudo service apache2 restart
Jacky Nguyen
quelle
95
Nicht zu fassen. Funktioniert unter Ubuntu 18.04 mit phpmyadmin, das mit apt installiert wurde.
PNDA
7
Arbeitete darin, dass ich Tabellen auswählen konnte, aber Fehler zurückgegeben, als ich versuchte, Db
Alperian
6
Fehler
Herbert
30
Wenn beim DB-Export ein ähnliches Problem auftritt, müssen Sie /usr/share/phpmyadmin/libraries/plugin_interface.lib.php in Zeile 551 von if ($ options! = Null && count ($ options)> 0) {bis _if bearbeiten ($ options! = null && count ((array) $ options)> 0) { Könnte für @alperian und andere interessant sein
Bernd Schuhmacher

5
Das hat bei mir nicht funktioniert. Ich habe Error in processing request Error code: 500 Error text: Internal Server Error. Die Lösung von @Chandra Nakka hat mein Problem behoben.
Jee

473

Einfachste Methode:

Führen Sie dies einfach unter der Befehlszeile im Terminal aus und kehren Sie zu PhpMyAdmin zurück. Jetzt funktioniert es gut :)

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

Manuelle Methode:

Öffnen Sie die Datei sql.lib.php

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

Suchen Sie nach count($analyzed_sql_results['select_expr']Code in der Datei. Sie können dies bei Zeile ~ 613 erhalten . Sie können diesen unten falschen Code sehen

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

Ersetzen Sie einfach den falschen Code durch den folgenden

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

Speichern Sie die Datei und kommen Sie zu PhpMyAdmin .

Jetzt funktioniert es gut :)


39
Arbeitet in Ubuntu 18.04 am Aug 2018 :)
Luiz Gonçalves

4
Hat bei Ubuntu 16.04
SP Singh

2
Funktioniert wie Charme
Rameez Rami

2
Funktioniert unter Ubuntu 19.04. Danke
Murume

4
Ein netter kleiner Trick für Nano ist, dass Sie tippen nano +613 filenamekönnen, um direkt zur jeweiligen Zeile zu gelangen.
SteffenNielsen

102

Ich habe diesen PHP 7.2 count () - SYNTAX-Fehler in sql.lib.php gefunden

Das funktioniert perfekt in meiner Konfiguration:

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

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

Zeile ändern : Klammer vor == verschieben

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

im

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

In der folgenden Zeile müssen Sie auch eine der schließenden Klammern am Ende entfernen.
Floppes

Vielen Dank. Wie wurde ein solcher Fehler mit einem passenden installierbaren Paket ausgelöst? Nur ein bisschen lächerlich.
Josh Morel

1
@floppes Nein, es ist nicht korrekt. Sie sollten diese schließende Klammer NICHT entfernen. Ich habe deinen Weg getestet und es verursacht server error. Die Antwort von @ loquace sollte die sein, die akzeptiert werden soll.
Langer

Vielen Dank, dass Sie es für uns formuliert und fett gedruckte Schrift verwendet haben, wo es benötigt wird. Weder die 1. noch die 2. Antwort waren mir klar genug, weil sie nicht sagten, was sie taten. Das Bearbeiten auf Nano ist nicht dasselbe wie gedit oder was auch immer.
Logicbloke

71

auf Debian getestet, sollte unter Ubuntu funktionieren:

1.) Laden Sie zuerst die neueste phpMyadmin-Datei herunter.

2.) Löschen Sie alle Sicherungsdateien im /usr/share/phpmyadminVerzeichnis ( erstellen Sie eine Sicherungskopie) .

3.) /usr/share/phpmyadmin/Dekomprimieren Sie alle Dateien des neuesten phpmyadmin in das Verzeichnis.

4.) Datei libraries/vendor_config.phpändern und Zeile ändern:

define('CONFIG_DIR', '');

zu

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

und

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

zu

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

5.) Apache Server neu starten und fertig.


3
Funktioniert unter Ubuntu 16.04
pjehan

7
Arbeitet auf Ubuntu 18.04
Simon Epskamp

5
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - Ich musstemkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

Ubuntu 16.04 extrahiert es einfach, um zu /usr/share/phpmyadminfunktionieren. Musste die späteren Schritte nicht befolgen.
Tushar.dahiwale

@billynoah Gleich hier mit Neuinstallation. Ich habe das tmp-Verzeichnis erstellt, es auf 777 gesetzt, Apache neu gestartet, mich von phpMyAdmin abgemeldet und die Fehler sind verschwunden.
JScarry

38

Datei bearbeiten :'/usr/share/phpmyadmin/libraries/sql.lib.php'

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

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

das hat bei mir funktioniert


Es hat für mich funktioniert, basierend auf der Bedingung, dass der interne 500-Fehler behoben wurde. Das alte Fehlerproblem "phpmyadmin - count (): Parameter muss ein Array oder ein Objekt sein, das Countable implementiert" wurde nicht behoben.
Shashik493

Das scheint für mich zu funktionieren, aber weiß jemand, warum das passiert ist? Mein phpmyadmin hat einwandfrei funktioniert und dann habe ich mich plötzlich heute angemeldet und es schien dieses Problem zu haben? Ubuntu 18.04.2 LTS
Wheelsmanx

Arbeitet auf UBuntu 18.04, Flügel 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

Das hat bei mir am 18.04 funktioniert, danke! Sie müssen den Server nicht einmal neu starten - PHP wird als "live" interpretiert.
Jelle Veraa

@ JelleVeraa, Sie sind der Sonderfall hehehe;)
Kaleem

32

Wenn jemand einen ähnlichen Fehler auf der DB-Exportseite hat (ich hatte dieses Problem in Ubuntu 18.04), ersetzen Sie Zeile 551 in der Datei /usr/share/phpmyadmin/libraries/plugin_interface.lib.phpdurch Code

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

Das hat mir auch geholfen, aber ich musste sowohl die Antwort als auch dies tun. Ubuntu 18.04
Karuhanga

2
Dies hat funktioniert, um die Fehlermeldungen zu beseitigen, aber ich denke, es vermeidet dann die if-Anweisung insgesamt und ich erhalte nichts in meinem Datenbankexport (mit einer Reihe von Fehlern, die unten angezeigt werden, nachdem die Seite nach Abschluss einer Datenbank aktualisiert wurde Export mit einem winzigen Dateibereich)
Warren Wang

Kuss, Kuss, ich liebe dich.
Noah Krasser

1
Auf Debian 9 ersetzen Sie die Zeile 551: if ($options != null && count($options) > 0) {durch: if ($options != null) {dann können Sie exportieren
BitDEVil2K16

Dies ist die einzige, die am 18.04
TeT Psy


24

Gehen Sie am Ubuntu-18.04 wie folgt vor:

Schritt 1) suchensql.lib.php

Es wird etwas zeigen wie:

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

Schritt 2) Öffnen Sie das Terminal (Alt t) und schreiben Sie:

sudo /usr/sbin/pma-configure

Schritt 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php und Suche unten Funktion:

 

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

Schritt 4) Ersetzen Sie die obige Funktion durch:

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

Schritt 4) Speichern und schließen Sie die Datei und den folgenden Befehl auf dem Terminal

sudo /usr/sbin/pma-secure

Schritt 5) sudo service mysql reload

Schritt 6) sudo service apache2 reload

Es funktioniert für mich .. Viel Glück

Neoark Software
Das Neuladen von MySQL und Apache ist nicht erforderlich.
Tacsiazuma
Nach Dateimodifikationen wurde folgende Meldung angezeigt: "- root @ Lalla: ~ # / usr / sbin / pma-Secure - Sicherung der phpMyAdmin-Installation ... - Setup-Skript kann keine Konfiguration schreiben. - root @ Lalla: ~ # "
Cl-R
Sie haben einfach eine Klammer hinzugefügt. Aber danke. Ich entfernte die zusätzliche Klammer am Ende der Linie
redestructa
Ich habe xampp auf meinem Mac installiert, ich konnte den Ordner / usr / share / phpmyadmin nicht finden und daher '/usr/share/phpmyadmin/libraries/sql.lib.php' existiert dieses Dosent für mich. Können Sie mir dabei helfen?
Saurabh Verma
Diese Antwort war unglaublich nützlich! Das Problem für mich gelöst! Vielen Dank! PS: Sie können Blowfish-Generatoren online finden.
Lucbas
Und die Lösung unter diesem Link: devanswers.co/manually-upgrade-phpmyadmin folgt einem ähnlichen Plan, außer dass die Blowfish-Schritte durch einfachere ersetzt werden.
Gwideman
Dies ist eine viel bessere Lösung als das Bearbeiten der Konfigurationsdateien älterer Versionen.
Andromeda
Vielen Dank! In dieser Zeile habe ich mich am Ende geirrt, als ich 3 schließende Klammern installiert hatte. Ich brauchte nur 2 schließende Klammern && ($ analyse_sql_results ['select_expr'] [0] == '*'). Arbeitete an phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin
2
Behebt das Problem unter Ubuntu 18.04 LTS. Sollte die akzeptierte Antwort sein.
Bgaze
Es hat für mich funktioniert .. Keine Notwendigkeit, MySQL oder irgendetwas zu aktualisieren ... Danke @ole
Nitin Vaghani
1
In Zeile 613 wechseln Sie zu|| (count($analyzed_sql_results['select_expr']) == 1
tnductam
Es fehlte eine Klammer, um den Funktionsaufruf || zu schließen (count ($ analyse_sql_results ['select_expr']) == 1 ist die richtige Aussage
Ruberandinda Patience
Der Dateipfad lautet "/usr/share/phpmyadmin/libraries/sql.lib.php" für diejenigen, die nicht wissen, wo sie zu finden sind.
Ali Imran
Ich würde die Reihenfolge von 1 und 2 ändern, und vor wget würde ich cd / tmp, aber abgesehen davon, ausgezeichnet, danke.
Chris
Das funktioniert bei mir, danke für die einfache Lösung!
Uestcfei
Ich habe xampp auf meinem Mac installiert, ich konnte den Ordner / usr / share / phpmyadmin nicht finden und daher '/usr/share/phpmyadmin/libraries/sql.lib.php' existiert dieses Dosent für mich. Können Sie mir dabei helfen?
Saurabh Verma
@ SaurabhVerma führen Sie eine Dateisuche nach sql.lib.php oder nach dem Ordner phpmyadmin durch - wenn Sie phpmyadmin haben, muss es irgendwo installiert werden
jave.web
22

Öffnen Sie diese Datei: '/usr/share/phpmyadmin/libraries/sql.lib.php'

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

Drücken Sie Strg + W, um zu suchen (count ($ analyse_sql_results ['select_expr'] == 1)

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

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

Starten Sie den Server neu

 sudo service apache2 restart

Wenn Sie immer noch mit demselben Problem konfrontiert sind, gehen Sie wie folgt vor.

Öffnen Sie diese Datei /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

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

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

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

durch folgenden Code ersetzen

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

Speichern Sie nun den Server und starten Sie ihn neu

sudo /etc/init.d/apache2 restart
Kundan Roy
quelle
Sie haben einfach eine Klammer hinzugefügt. Aber danke. Ich entfernte die zusätzliche Klammer am Ende der Linie
redestructa
Ich habe xampp auf meinem Mac installiert, ich konnte den Ordner / usr / share / phpmyadmin nicht finden und daher '/usr/share/phpmyadmin/libraries/sql.lib.php' existiert dieses Dosent für mich. Können Sie mir dabei helfen?
Saurabh Verma
18

Ich denke, die beste Option ist, Phpmyadmin auf eine Version zu aktualisieren, die dies bereits behoben hat.

Bis es als Deb veröffentlicht wird, können Sie es wie in @ crimson-501 Antwort tun, die ich unten kopieren werde:

  • Ihr erster Schritt ist die Installation von PMA (phpMyAdmin) aus dem offiziellen Ubuntu-Repo : apt-get install phpmyadmin.
  • Als nächstes CD in das Verzeichnis usr / share : cd /usr/share.
  • Drittens entfernen Sie das Verzeichnis phpmyadmin : rm -rf phpmyadmin.
  • Jetzt müssen wir die neueste Version PMA auf unser System herunterladen (Beachten Sie, dass Sie muss wget: apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Lassen Sie mich die Argumente dieses Befehls erklären, definiert -P den Pfad und „die link.zip“ ist zur Zeit (7/17/18 ) die neueste Version von PMA. Diese Links finden Sie HIER .
  • Für diesen nächsten Schritt benötigen Sie unzip ( apt-get install unzip) : unzip phpMyAdmin-4.9.4-english.zip. Wir haben gerade PMA entpackt, jetzt werden wir es in sein endgültiges Zuhause bringen.
  • Verwenden cpwir den Befehl (Kopieren), um unsere Dateien zu verschieben! Beachten Sie, dass wir das -rArgument hinzufügen müssen, da dies ein Ordner ist. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Jetzt ist es Zeit aufzuräumen : rm -rf phpMyAdmin-4.9.4-english.

Weiter lesen!

Möglicherweise stellen Sie jetzt zwei Fehler fest, nachdem Sie sich bei PMA angemeldet haben.

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.

Diese Probleme sind jedoch relativ einfach zu beheben. Für die erste Ausgabe müssen Sie nur den Editor Ihrer Wahl auswählen und bearbeiten, /usr/share/phpmyadmin/config.inc.phpaber es gibt ein Problem, wir haben es entfernt! Das ist in Ordnung, alles was Sie tun müssen ist: cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php.

Beispiel phpMyAdmin Blowfish Secret Variable Entry:

/*
 * 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! */

Speichern und schließen Sie nun die Datei.

  • Jetzt erstellen wir ein tmp-Verzeichnis für PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. Mit dem letzten Befehl kann der Apache-Webserver das tmp-Verzeichnis besitzen und dessen Inhalt bearbeiten.
PhoneixS
quelle
Diese Antwort war unglaublich nützlich! Das Problem für mich gelöst! Vielen Dank! PS: Sie können Blowfish-Generatoren online finden.
Lucbas
Und die Lösung unter diesem Link: devanswers.co/manually-upgrade-phpmyadmin folgt einem ähnlichen Plan, außer dass die Blowfish-Schritte durch einfachere ersetzt werden.
Gwideman
Dies ist eine viel bessere Lösung als das Bearbeiten der Konfigurationsdateien älterer Versionen.
Andromeda
17

Versuchen Sie, diese Funktion in der Datei /usr/share/phpmyadmin/libraries/sql.lib.php zu ersetzen

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.
quelle
Vielen Dank! In dieser Zeile habe ich mich am Ende geirrt, als ich 3 schließende Klammern installiert hatte. Ich brauchte nur 2 schließende Klammern && ($ analyse_sql_results ['select_expr'] [0] == '*'). Arbeitete an phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin
17

Ubuntu 18.04 LTS

Dies sind die Schritte, die für mich funktioniert haben. Vielen, vielen Dank an William Desportes für die Bereitstellung der automatischen Updates für ihre Ubuntu PPA.

Schritt 1 ( aus dem Beitrag von William Desportes )
$sudo add-apt-repository ppa:phpmyadmin/ppa

Schritt 2
$sudo apt-get --with-new-pkgs upgrade

Schritt 3
$sudo service mysql restart

Wenn Sie Probleme beim Neustart von MySQL haben, können Sie auch mit der folgenden Sequenz
$ sudo service mysql stop;
$ neu startensudo service mysql start;

C13L0
quelle
2
Behebt das Problem unter Ubuntu 18.04 LTS. Sollte die akzeptierte Antwort sein.
Bgaze
15

Ubuntu 18.10 (Dezember 2018)

Zeile 613, 614, 615, ersetzen durch:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;
olealgo
quelle
Es hat für mich funktioniert .. Keine Notwendigkeit, MySQL oder irgendetwas zu aktualisieren ... Danke @ole
Nitin Vaghani
15

Arbeite für mich .. Ubuntu 18.04

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

Suchen Sie nach count($analyzed_sql_results['select_expr']Code in der Datei. Sie können dies bei Zeile ~ 613 erhalten.

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

Einfach durch Code ersetzen:

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

Speichern Sie die Datei und laden Sie PhpMyAdmin neu.

Erledigt!!!

Ucup Timposu
quelle
1
In Zeile 613 wechseln Sie zu|| (count($analyzed_sql_results['select_expr']) == 1
tnductam
11

Für meine Version von phpmyadmin (4.6.6deb5) habe ich Zeile 613 gefunden und festgestellt, dass die count () - Klammern nicht richtig geschlossen wurden. Um dies vorübergehend bis zur nächsten Version zu beheben, ändern Sie einfach:

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

zu:

|| (count($analyzed_sql_results['select_expr']) == 1
JT
quelle
Es fehlte eine Klammer, um den Funktionsaufruf || zu schließen (count ($ analyse_sql_results ['select_expr']) == 1 ist die richtige Aussage
Ruberandinda Patience
Der Dateipfad lautet "/usr/share/phpmyadmin/libraries/sql.lib.php" für diejenigen, die nicht wissen, wo sie zu finden sind.
Ali Imran
9

Dies wurde in späteren Versionen von PHPMyAdmin behoben. Die Ubuntu Software Repositories für Ubuntu 18.04.2 enthalten Version 4.6.6.5, während sie derzeit auf 4.9.0.1 sind. Das Aktualisieren Ihrer PHPMyAdmin-Installation behebt dieses Problem, kann sich jedoch als riskanter erweisen, als nur diese eine Codezeile zu bearbeiten. So habe ich es auf meinem Ubuntu-Server gemacht. Die Schritte sind für alle Betriebssysteme im Wesentlichen gleich (mit einem anderen Pfad).

  1. Laden Sie PHPMyAdmin herunter .
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. Sichern Sie Ihre alte PHPMyAdmin-Installation.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Legen Sie Ihr neues PHPMyAdmin auf Ihrem alten PHPMyAdmin ab
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Stellen Sie sicher, dass es funktioniert. Wenn dies nicht der Fall ist, haben Sie ein Backup. Stellen Sie es also wieder her und bearbeiten Sie die fehlerhafte Zeile manuell. Nach meiner persönlichen Erfahrung stellte ich danach fest, dass Version 4.6.6.5 nicht nur mit Fehlern behaftet war, sondern im Vergleich zur neuen Version 4.9.0.1 auch unglaublich langsam. Die Geschwindigkeitssteigerung war pure Magie für etwas, von dem ich dachte, dass es von "WordPress" -Qualität ist.

NatoBoram
quelle
Ich würde die Reihenfolge von 1 und 2 ändern, und vor wget würde ich cd / tmp, aber abgesehen davon, ausgezeichnet, danke.
Chris
Das funktioniert bei mir, danke für die einfache Lösung!
Uestcfei
8

Funktioniert mit UBUNTU 16.04.3 Einfach öffnen

usr / share / library / sql.lib.php

ändern

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

Zu

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

ibrahim.suez
quelle
5

Upgrade auf phpMyAdmin 4.8.3. Dies löst die PHP 7.2-Kompatibilitätsprobleme

HUGO POLANCO
quelle
5

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

Dies habe ich in Zeile 614 geändert und phpmyadmin funktioniert ohne Fehler. Benötigen Sie eine (vor dem Zählen und eine )vor dem Zählen ==. Das ist es.

Bikram Nath
quelle
4

Datei '/usr/share/phpmyadmin/libraries/sql.lib.php' bearbeiten Ersetzen: (Backup erstellen)

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

Mit:

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

Hallo die folgenden lösen mein gleiches Problem absolut (Import / Export und so weiter):

Behebung des Fehlers Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

also ... unter ubuntu 18.04, mysql, php7.2: terminal:

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

Suchen Sie die folgende Zeile (Strg + F):

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

es war für mich in Zeile 551

und ändern Sie für Folgendes:

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

Strg + s zum Speichern der Änderungen

und im Terminal: Strg + C für die Rückmeldung ...

und: sudo systemctl restart apache2

"Ich denke in der neuen PHP-Version. Es kann nicht count () oder sizeof () mit un Array-Typ verwenden. Parameter auf Array erzwingen ist eine einfache Möglichkeit, diesen Fehler zu beheben, ..."

Vielen Dank für den ursprünglichen Autor für die Problemlösung! Ich versuche es zu teilen!

Máté Kiss
quelle
3

Öffnen Sie die /usr/share/phpmyadmin/sql.lib.phpDatei mit erhöhten Berechtigungen und bearbeiten Sie Folgendes in der Funktion PMA_isRememberSortingOrder():

  1. ~ Zeile 613, um den anfänglichen Fehler zu beheben:
    • Ersetzen || count($analyzed_sql_results['select_expr'] == 1)
    • Mit || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ Zeile 614, um den 500-Fehler zu beheben, der wahrscheinlich folgen wird:
    • Ersetzen && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Mit && ($analyzed_sql_results['select_expr'][0] == '*'))

Starten Sie Ihren Apache-Server neu : sudo service apache2 restart.

Getestet unter Linux Mint 19.1 basierend auf Ubuntu 18.04, mit PhpMyAdmin 4.6.6 und PHP 7.2.

elenche
quelle
3

Ich habe alle oben genannten Lösungen ausprobiert, aber bei mir nicht funktioniert.

Versuche dies:-

Installieren Sie die erforderliche Version von PHP (in meinem Fall 7.0) und geben Sie dann im Terminal ein

sudo update-alternatives --config php

Die Ausgabe wird wie folgt aussehen: -

Geben Sie hier die Bildbeschreibung ein

Dann können Sie zu jeder Version von PHP wechseln, indem Sie einfach die Auswahlnummer eingeben (in meinem Fall 1).

Hoffe das kann anderen helfen - :)

Tridev Shrestha
quelle
2

Ich hatte dieses Problem bei der Verwendung von Windows und die obigen Antworten lösten es für mich. Als ich jedoch zu Linux (Ubuntu 18.04 LTS) wechselte, hatte ich das gleiche Problem und konnte nicht herausfinden, wie ich es lösen konnte, weil ich die Datei nicht sah '/usr/share/phpmyadmin/libraries/sql.lib.php'.

Diese Datei sql.lib.php befand sich nicht im Freigabeordner oder im Ordner phpmyadmin / library meines Verzeichnisses / opt / lampp, da ich xampp auf meinem Ubuntu verwendet habe. Basierend auf dem Update für das xampp-Setup (da ich ab sofort die neueste Installation verwendet habe).

Die Antwort ist noch zu ersetzen: (count($analyzed_sql_results['select_expr'] == 1)

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

Die zu suchende Datei befindet Sql.phpsich jedoch in/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Zukünftige Updates oder wenn Sie sie immer noch nicht finden: Verwenden Sie diese Option grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadmin, um nach passenden Dokumenten in Ihrem Verzeichnis zu suchen und diese entsprechend zu bearbeiten

KingNonso
quelle
2

Funktion ersetzen:

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
quelle
2

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

Bei Ihrem Fehler wird ein Fehler angezeigt

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

Gehen Sie zu dieser Zeile und entfernen Sie den Funktionsaufruf.

Für mich geht das.

amrit
quelle
2

Ich sehe, dass Sie alle unsere Dateien bearbeiten oder aktualisieren

Für diejenigen, die automatische Updates wünschen, können Sie unser Ubuntu PPA verwenden

sudo add-apt-repository ppa: phpmyadmin / ppa

Und für Debian-Benutzer müssen Sie auf die nächste Version von Debian warten oder PPA verwenden

Ubuntu 20 hat phpMyAdmin 4.9 oder eine neuere Version

Debian-Problem auf unserem Tracker

Zählbare Probleme auf unserem Tracker

TLDR-Update auf die neueste Version 4.9 oder 5.0, um dieses Problem zu beheben.

William Desportes
quelle
1

Unter Ubuntu 18.04 mit MariaDb und Nginx habe ich das Problem gelöst, indem ich die Datei /usr/share/phpmyadmin/libraries/sql.lib.php wie folgt aktualisiert habe:

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

Die von @Nguyen erwähnte Antwort gibt einen Fehler von 500 aus und sagt:

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

Da der Fehler im Code in der conf-Datei variieren kann (@Jacky Nguyen vs @ ĦΔŇĐŘΔ ŇΔҜҜΔ-Antworten), wäre
die allgemeine Antwort der Lösung ,
a) die Bedingungslogik in der conf-Datei zu
korrigieren , um Sinn zu machen (x) oder b) korrigiert / aktuell zu installieren phpmyadmin

Wie für a)

  1. Öffnen Sie die Datei mit dem Fehlercode.
    Für die Terminal-Leute: sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
    Für die normalen Leute:sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php

  2. Finden Sie die Bedingung - im Grunde suchen $analyzed_sql_results['select_expr']

  3. Jetzt sollte die Logik darin bestehen, zu überprüfen, ob dieses Unterarray leer ist oder ob es nur 1 Element mit einem Wert hat. "*

  4. also im grunde der block
    zwischen && $analyzed_sql_results['select_from']
    und && count($analyzed_sql_results['select_tables']) == 1
    sollte ungefähr so ​​aussehen

&& (
    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 "*"
    )
)

Dies ist ein gutes Beispiel dafür, warum Sie Ihren Code einrücken und verschönern sollten. Wenn er korrekt eingerückt wäre, würde dies meiner Meinung nach niemals passieren oder zumindest leichter zu finden sein.

jave.web
quelle
Ich habe xampp auf meinem Mac installiert, ich konnte den Ordner / usr / share / phpmyadmin nicht finden und daher '/usr/share/phpmyadmin/libraries/sql.lib.php' existiert dieses Dosent für mich. Können Sie mir dabei helfen?
Saurabh Verma
@ SaurabhVerma führen Sie eine Dateisuche nach sql.lib.php oder nach dem Ordner phpmyadmin durch - wenn Sie phpmyadmin haben, muss es irgendwo installiert werden
jave.web