phpmyadmin - count (): il parametro deve essere un array o un oggetto che implementa Countable


468

Ho caricato il backup su una tabella, aprendo la tabella vedo questo:

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)

All'interno di phpMyAdmin ...

PHP è 7.2, il server è Ubuntu 16.04, installato ieri.

Cercando ho visto che alcuni hanno questo errore nel loro codice, ma non ho trovato nessuno che lo abbia ricevuto in phpMyAdmin ...

Cosa dovrei fare? È questo il mio errore? Un errore phpmyadmin? attendere l'aggiornamento? Torno su PHP 7.1?


9
Coloro che si trovano ad affrontare problemi come: if ( count($articles)){..}in CodeIgniter , dovrebbero usare: if ( count((array)$articles)){..}come qui
fWd82

2
ho avuto questo problema su phpmyadmin v4.6 che ho aggiornato a 4.8 è scomparso. , sembra che abbia qualcosa a che fare con mariadb 10.3 poiché non ho avuto quel problema su mariadb 10.1 con phpmyadmin 4.6
user889030

Nel mio caso il problema si è verificato quando avevo installato php 7.3 mentre il mio phpMyAdmin era 4.7.1, sono tornato a php 7.0 e funziona benissimo o devi installare una versione di phpMyAdmin compatibile con php 7.3
vinsa

Risposte:


877

Modifica il file /usr/share/phpmyadmin/libraries/sql.lib.phpusando questo comando:

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

Nella riga 613 la funzione di conteggio viene sempre valutata come vera poiché non è più presente alcuna parentesi di chiusura $analyzed_sql_results['select_expr']. Effettuare le sostituzioni seguenti risolve questo problema, quindi sarà necessario eliminare l'ultima parentesi di chiusura sulla riga 614, poiché ora è una parentesi aggiuntiva.

Sostituire:

((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] == '*'))

Riavvia il server apache:

sudo service apache2 restart

95
Incredibile. Funziona su Ubuntu 18.04 con phpmyadmin installato usando apt.
PNDA

7
Ha funzionato in quanto potevo selezionare le tabelle, ma l'errore è tornato quando ho provato a esportare Db
Alperian il


30
Se si riscontra un problema simile nell'esportazione di DB, è necessario modificare /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, riga 551 da if ($ options! = Null && count ($ options)> 0) {to _if ($ options! = null && count ((array) $ options)> 0) { Potrebbe essere interessante per @alperian e altri
Bernd Schuhmacher

5
Questo non ha funzionato per me. Ho capito Error in processing request Error code: 500 Error text: Internal Server Error. La soluzione di @Chandra Nakka ha risolto il mio problema.
Jee,

473

Metodo più semplice:

Basta eseguire questo sotto la riga di comando nel terminale e tornare a PhpMyAdmin. Ora funziona bene :)

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

Metodo manuale:

Apri il file sql.lib.php

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

Trova il count($analyzed_sql_results['select_expr']codice nel file. Puoi ottenerlo alla riga ~ 613 . Puoi vedere questo sotto il codice sbagliato

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

Sostituisci semplicemente quel codice sbagliato con questo sotto uno

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

Salva il file e vieni su PhpMyAdmin .

Ora funziona bene :)


39
Funziona in Ubuntu 18.04 ad agosto 2018 :)
Luiz Gonçalves il

4
Non ha funzionato per me su Ubuntu 16.04
SP Singh,

2
Funziona come per incanto
Rameez Rami

2
Funziona su Ubuntu 19.04. Grazie
murume

4
Un piccolo trucco per nano è che puoi digitare nano +613 filenameper portarti direttamente alla riga specifica.
Steffen Nielsen,

102

Ho trovato questo PHP 7.2 count () - errore SYNTAX in sql.lib.php

Funziona perfettamente sulla mia configurazione:

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

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

Cambia linea : sposta la parentesi prima di ==

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

in

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

Nella riga seguente dovrai anche rimuovere una delle paratie di chiusura alla fine.
floppes il

Grazie. Come è stato rilasciato un errore del genere con un pacchetto installabile apt? Solo un po 'ridicolo.
Josh Morel

1
@floppes No, non è corretto. NON DOVREBBE rimuovere la paratesi di chiusura. Ho provato a modo tuo e questo ha causato server error. La risposta di @ loquace dovrebbe essere quella da accettare.
Lungo

Grazie per averlo spiegato per noi e aver utilizzato il carattere grassetto dove è necessario. Né la prima né la seconda risposta erano abbastanza chiare per me perché non dicevano quello che stavano facendo. La modifica su nano non è la stessa di gedit o altro.
logicbloke,

70

testato su Debian, dovrebbe funzionare su Ubuntu:

1.) Prima scarica l'ultimo file phpMyadmin.

2.) Elimina (crea un backup) tutti i file della versione precedente situati nella /usr/share/phpmyadmindirectory.

3.) decomprimere per /usr/share/phpmyadmin/directory tutti i file dell'ultimo phpmyadmin.

4.) Modifica file libraries/vendor_config.phpe cambia riga:

define('CONFIG_DIR', '');

per

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

e

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

per

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

5.) riavviare il server apache e il gioco è fatto.


3
Funziona su Ubuntu 16.04
pjehan

7
Funziona su Ubuntu 18.04
Simon Epskamp,

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

Ubuntu 16.04 lo stava semplicemente estraendo per /usr/share/phpmyadminfunzionare. Non è necessario seguire i passaggi successivi.
tushar.dahiwale,

@billynoah Lo stesso qui con la nuova installazione. Ho creato la directory tmp, impostata su 777, riavviato Apache, disconnesso da phpMyAdmin e gli errori sono scomparsi.
JScarry

38

Modifica file :'/usr/share/phpmyadmin/libraries/sql.lib.php'

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

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

questo ha funzionato per me


Ha funzionato per me in base alla condizione in cui hai risolto l'errore 500 interno, ma il vecchio problema di errore "phpmyadmin - count (): il parametro deve essere un array o un oggetto che implementa Countable" non è stato risolto.
shashik493,

questo sembra funzionare per me, ma qualcuno sa perché è successo? Il mio phpmyadmin funzionava perfettamente e poi all'improvviso ho effettuato l'accesso oggi e sembrava avere questo problema? Ubuntu 18.04.2 LTS
wheelsmanx

Funziona su UBuntu 18.04, wing Nginx, php 7.2
PHPer l'

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

Questo ha funzionato per me il 18.04, grazie! Non è nemmeno necessario riavviare il server: PHP viene interpretato "live".
Jelle Veraa,

@JelleVeraa, Sei il caso speciale hehehe;)
kaleem

32

Se qualcuno ha un errore simile nella pagina di esportazione del DB (ho avuto questo problema in Ubuntu 18.04), quindi sostituire la riga 551 nel file /usr/share/phpmyadmin/libraries/plugin_interface.lib.phpcon il codice

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

Anche questo mi ha aiutato, ma ho dovuto fare sia la risposta che questa. Ubuntu 18.04
Karuhanga,

2
Questo ha funzionato per sbarazzarsi dei messaggi di errore, ma penso che quindi eviti l'istruzione if tutti insieme e non ottengo nulla nell'esportazione del mio database (con un mucchio di errori che mostra in fondo dopo l'aggiornamento della pagina al completamento di un database esportazione con un minimo ingombro di file)
Warren Wang

Bacio, bacio, ti amo.
Noah Krasser,

1
Su Debian 9 sostituisci la riga 551: if ($options != null && count($options) > 0) {con: if ($options != null) {allora puoi esportare
BitDEVil2K16

Questo è l'unico che ha funzionato il 18.04
TeT Psy il


24

Procedere come segue su ubuntu-18.04:

Passaggio 1) individuaresql.lib.php

Mostrerà qualcosa di simile:

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

Passaggio 2) Aprire il terminale (Alt t) e scrivere:

sudo /usr/sbin/pma-configure

Passaggio 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php e cerca sotto la funzione:

 

    funzione PMA_isRememberSortingOrder ($ analised_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'])
            && $ analised_sql_results ['select_from']
            && ((vuoto ($ analised_sql_results ['select_expr']))
                || (count ($ analised_sql_results ['select_expr'] == 1)
                    && ($ analised_sql_results ['select_expr'] [0] == '*')))
            && count ($ analised_sql_results ['select_tables']) == 1;
     }

Passaggio 4) Sostituire la funzione sopra con:

     funzione PMA_isRememberSortingOrder ($ analised_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'])
            && $ analised_sql_results ['select_from']
            && ((vuoto ($ analised_sql_results ['select_expr']))
                || (count ($ analised_sql_results ['select_expr']) == 1)
                    && ($ analised_sql_results ['select_expr'] [0] == '*'))
            && count ($ analised_sql_results ['select_tables']) == 1;
     }

Passaggio 4) Salvare e chiudere il file e sotto il comando sul terminale

sudo /usr/sbin/pma-secure

Passaggio 5) sudo service mysql reload

Passaggio 6) sudo service apache2 reload

Funziona per me .. Goodluck


MySQL e Apache ricaricare non sono necessari.
Tacsiazuma,

Ho ricevuto questo messaggio dopo le modifiche al file: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Protezione dell'installazione di phpMyAdmin ... - Lo script di installazione non sarà in grado di scrivere la configurazione. - root @ Lalla: ~ # "
cl-r

22

apri questo file: '/usr/share/phpmyadmin/libraries/sql.lib.php'

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

premi ctrl + w per cercare (count ($ analised_sql_results ['select_expr'] == 1)

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

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

Riavvia il server

 sudo service apache2 restart

inoltre, se stai ancora affrontando lo stesso problema, procedi come segue.

apri questo file /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

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

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

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

sostituire con il seguente codice

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

ora salva e riavvia il server

sudo /etc/init.d/apache2 restart

Hai semplicemente aggiunto un tutore. Ma grazie. Ho rimosso la parentesi extra alla fine della linea
redestructa il

Ho installato xampp sul mio mac, non sono riuscito a trovare la cartella / usr / share / phpmyadmin e quindi '/usr/share/phpmyadmin/libraries/sql.lib.php' questo dosaggio esiste per me, mi puoi aiutare?
Saurabh Verma

18

Penso che l'opzione migliore sia aggiornare Phpmyadmin a una versione che ha già risolto questo problema.

Fino a quando non verrà pubblicato come deb, potresti farlo come nella risposta @ Crimson-501 che copierò di seguito:

  • Il primo passo è quello di installare PMA (phpMyAdmin) dal repo ufficiale di Ubuntu: apt-get install phpmyadmin.
  • Avanti, cd nella directory usr / share: cd /usr/share.
  • In terzo luogo, rimuovere la directory phpMyAdmin: rm -rf phpmyadmin.
  • Ora abbiamo bisogno di scaricare l'ultima versione PMA sul nostro sistema (notare che è necessario wget: apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Lasciatemi spiegare gli argomenti di questo comando, -P definisce il percorso e "la link.zip" è attualmente (7/17/18 ) l'ultima versione di PMA. Puoi trovare questi link QUI .
  • Per questo il prossimo passo è necessario decomprimere ( apt-get install unzip): unzip phpMyAdmin-4.9.4-english.zip. Abbiamo appena decompresso PMA, ora lo sposteremo nella sua ultima casa.
  • Usiamo il cpcomando (copia) per spostare i nostri file! Nota che dobbiamo aggiungere l' -rargomento poiché questa è una cartella. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Ora è il momento di ripulire: rm -rf phpMyAdmin-4.9.4-english.

Continua a leggere!

Ora potresti notare due errori dopo aver effettuato l'accesso a 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.

Tuttavia, questi problemi sono relativamente facili da risolvere. Per il primo numero tutto quello che devi fare è prendere il tuo editor di scelta e modificarlo /usr/share/phpmyadmin/config.inc.phpma c'è un problema, l'abbiamo rimosso! Va bene, tutto quello che devi fare è: cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php.

Esempio di variabile segreta variabile 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! */

Ora salva e chiudi il file.

  • Ora creeremo una directory tmp per PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. L'ultimo comando consente al server Web Apache di possedere la directory tmp e modificarne il contenuto.

Questa risposta è stata incredibilmente utile! Risolto il problema per me! Grazie! PS: puoi trovare generatori di pesce palla online.
lucbas,

E la soluzione a questo link: devanswers.co/manually-upgrade-phpmyadmin segue un piano simile, tranne che sostituisce i passaggi del pesce palla con quelli più facili ..
gwideman

Questa è una soluzione molto migliore rispetto alla modifica dei file di configurazione delle versioni precedenti.
Andromeda,

17

Prova a sostituire questa funzione nel file: /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;
}

Grazie! questa riga è dove mi sono sbagliato alla fine in cui avevo 3 parentesi chiuse e avevo solo 2 parentesi chiuse && ($ analised_sql_results ['select_expr'] [0] == '*')). Ha lavorato su phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin,

17

Ubuntu 18.04 LTS

Questi sono i passaggi che hanno funzionato per me. Mille grazie a William Desportes per aver fornito gli aggiornamenti automatici sul loro PPA Ubuntu.

Passaggio 1 ( dal post di William Desportes )
$sudo add-apt-repository ppa:phpmyadmin/ppa

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

Passaggio 3
$sudo service mysql restart

Se riscontri problemi con il riavvio di mysql, puoi anche riavviare con la seguente sequenza
$ sudo service mysql stop;
$sudo service mysql start;


2
Risolve il problema su Ubuntu 18.04 LTS. Dovrebbe essere la risposta accettata.
bgaze

15

Ubuntu 18.10 (dicembre, 2018)

Linea 613, 614, 615, sostituire con:

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

Ha funzionato per me .. Non c'è bisogno di aggiornare mysql o altro ... Grazie @ole
Nitin Vaghani

15

Lavora per me .. Ubuntu 18.04

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

Trova il count($analyzed_sql_results['select_expr']codice nel file. Puoi ottenerlo alla riga ~ 613.

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

Sostituisci semplicemente con il codice:

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

Salvare il file e ricaricare PhpMyAdmin.

Fatto!!!


1
Nella riga 613, passa a|| (count($analyzed_sql_results['select_expr']) == 1
tnductam

11

Per la mia versione di phpmyadmin (4.6.6deb5), ho trovato la riga 613 e ho capito che le parentesi count () non erano chiuse correttamente. Per risolvere questo problema temporaneamente fino alla prossima versione, basta cambiare:

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

per:

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

Mancava una parentesi per chiudere la chiamata di funzione || (count ($ analised_sql_results ['select_expr']) == 1 è la frase corretta
Ruberandinda Patience,

il percorso del file è "/usr/share/phpmyadmin/libraries/sql.lib.php" per coloro che non sanno dove trovarlo.
Ali Imran,

9

Questo problema è stato risolto nelle versioni successive di PHPMyAdmin. I repository software Ubuntu per Ubuntu 18.04.2 contengono la versione 4.6.6.5, mentre sono attualmente alla 4.9.0.1. L'aggiornamento dell'installazione di PHPMyAdmin risolverà questo problema, ma potrebbe rivelarsi più rischioso della semplice modifica di quella riga di codice. Ecco come l'ho fatto sul mio Ubuntu Server. I passaggi sono essenzialmente gli stessi (con un percorso diverso) per tutti i sistemi operativi.

  1. Scarica 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. Eseguire il backup della vecchia installazione di PHPMyAdmin.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Rilascia il tuo nuovo PHPMyAdmin sul tuo vecchio PHPMyAdmin
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Verifica che funzioni. In caso contrario, welll ... Hai un backup, quindi ripristinalo e modifica manualmente la linea difettosa. Nella mia esperienza personale, ho scoperto dopo aver fatto questo che la versione 4.6.6.5 non era solo piena di bug, ma anche incredibilmente lenta rispetto alla nuova 4.9.0.1. L'aumento di velocità è stata pura magia per qualcosa che pensavo fosse di qualità "WordPress".


Vorrei cambiare l'ordine di 1 e 2, e prima di wget vorrei cd / tmp ma a parte questo, eccellente, grazie.
Chris,

Questo funziona per me, grazie per la soluzione semplice!
uestcfei,

8

Funziona su UBUNTU 16.04.3 Basta aprire

usr / share / librerie / sql.lib.php

modificare

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

Per

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


5

Aggiorna a phpMyAdmin 4.8.3. questo risolve i problemi di compatibilità di PHP 7.2


5

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

Questo è ciò che ho modificato nella riga 614 e phpmyadmin funziona senza errori. Ne ho bisogno (prima di contare e uno )prima ==. Questo è tutto.


4

Modifica file '/usr/share/phpmyadmin/libraries/sql.lib.php' Sostituisci: (esegui backup)

"|| (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));"

3

Salve quanto segue risolve assolutamente il mio stesso problema (import / export e così via):

Bug Fix Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

quindi ... sotto ubuntu 18.04, mysql, php7.2: Terminale:

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

Trova la seguente riga (ctrl + f):

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

era on line # 551 per me

e cambia per quanto segue:

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

ctrl + s per salvare le modifiche

e nel terminale: ctrl + c per tornare indietro promt ...

e: sudo systemctl restart apache2

"Penso nella nuova versione di php. Non può usare count () o sizeof () con un tipo di array. Forzare i parametri su array è un modo semplice per risolvere questo errore, ..."

Grazie per l'autore originale per la risoluzione dei problemi! Provo a condividerlo!


3

Apri il /usr/share/phpmyadmin/sql.lib.phpfile con privilegi elevati e modifica quanto segue nella funzione PMA_isRememberSortingOrder():

  1. ~ linea 613 per correggere l'errore iniziale:
    • Sostituire || count($analyzed_sql_results['select_expr'] == 1)
    • Con || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ linea 614 per correggere l'errore 500 che probabilmente seguirà:
    • Sostituire && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Con && ($analyzed_sql_results['select_expr'][0] == '*'))

Riavviare il server Apache: sudo service apache2 restart.

Testato su Linux Mint 19.1 basato su Ubuntu 18.04, con PhpMyAdmin 4.6.6 e PHP 7.2.


3

Ho provato tutte le soluzioni di cui sopra ma non ha funzionato per me.

Prova questo:-

Installa la versione richiesta di PHP (nel mio caso 7.0) e poi nel terminale, digita

sudo update-alternatives --config php

L'output sarà così: -

inserisci qui la descrizione dell'immagine

Quindi puoi passare a qualsiasi versione di PHP semplicemente inserendo il numero di selezione (nel mio caso 1).

Spero che questo possa aiutare gli altri - :)


2

Ho avuto questo problema quando ho usato Windows e le risposte sopra lo hanno risolto per me, tuttavia quando sono passato a Linux (Ubuntu 18.04 LTS) ho avuto lo stesso problema e non sono riuscito a capire come risolverlo perché non ho visto il file '/usr/share/phpmyadmin/libraries/sql.lib.php'.

Questo file sql.lib.php non era nella cartella condivisa o nella cartella phpmyadmin / libraries della mia directory / opt / lampp - poiché stavo usando xampp sul mio ubuntu. Basato sull'aggiornamento apportato all'installazione di xampp (perché ho usato l'ultima installazione al momento).

La risposta è ancora quella di sostituire: (count($analyzed_sql_results['select_expr'] == 1)

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

Tuttavia, il file da cercare si Sql.phptrova in/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Aggiornamenti futuri o se ancora non lo trovi: usa grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminper cercare i documenti corrispondenti nella tua directory e modificarli di conseguenza


2

Sostituisci funzione:

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

2

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

Vedi un errore sul tuo errore

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

vai su questa linea e rimuovi la chiamata di funzione.

Per me funziona.


2

Vedo che state tutti modificando o aggiornando dai nostri file

Per chi desidera aggiornamenti automatici è possibile utilizzare il nostro PPA Ubuntu

sudo add-apt-repository ppa: phpmyadmin / ppa

E per gli utenti Debian dovrai aspettare la prossima versione di Debian o usare PPA

Ubuntu 20 ha phpMyAdmin 4.9 o versione successiva

Problema Debian sul nostro tracker

Problemi numerabili sul nostro tracker

Aggiornamento TLDR all'ultima versione 4.9 o 5.0 per risolvere questo problema.


2

Questo ha funzionato bene per me su Ubuntu 18.04 .

Apri il file sql.lib.php

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

Sostituisci questo codice errato:

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

Con questo:

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

Salva il file.

Riavvia il tuo server con:

sudo service apache2 restart

E aggiorna PhpMyAdmin


1

Su Ubuntu 18.04 con MariaDb e Nginx, l'ho risolto aggiornando il file /usr/share/phpmyadmin/libraries/sql.lib.php come segue:

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

La risposta menzionata da @Nguyen genera un errore 500 che dice:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.