phpMyAdmin - Warning in ./libraries/sql.lib.php#613
Nei giorni scorsi, ho aggiornato uno dei miei PC per poi utilizzarlo per dei lavori di manutenzione su un sito Joomla.
Abituato come sono ad usare Ubuntu per questo genere di lavori, sono andato a rispolverare la mia "vecchia" workstation la quale dopo il trasloco avvenuto qualche mese fa era rimasta ad aspettare in cantina.
Per procedere e essere sicuro che tutto funzionasse al meglio, ho voluto risolvere alcuni problemi di configurazione e successivamente aggiornare l'intero sistema operativo e tutti i componenti software dei quali necessitavo.
Ho effettuato dunque il passaggio di versione di Ubuntu dalla versione 16.04 alla versione 18.04. Nell'aggiornamento, il sistema attualizza anche tutti i pacchetti installati. E' stato dunque aggiornato il server MySQL, phpMyAdmin, il server web Apache ed infine PHP.
Quella installata dall'aggiornamento è la versione PHP 7.2.
Da subito ho avuto problemi in quanto il sistema non interpretava più i miei file php. Sembrava anche non vedesse più phpMyAdmin. Ma quest'ultimo problema era legato al fatto che l'aggiornamento aveva sovrascritto il file di conficurazione apache2.conf. E' stato dunque sufficiente includere al suo interno il richiamo alla cartella di phpMyAdmin etvohilà: tutto tornato operativo... o forse no.
phpMyAdmin Warning in ./libraries/sql.lib.php#613
Appena fatto l'accesso a phpMyAdmin da browser e cominciato a fare le prime interrogazioni, mi sono reso conto che forse non era poi così tutto operativo. Un popup con avviso di errore del server e successiva schermata rossa mi ha un po' allarmato.
E' evidente che tra lo strumento di amministrazione di database phpmyAdmin v4.6.6 e PHP 7.2 non vi sia perfetta compatibilità. L’errore preso in esame è "Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable”.
Ma l'errore è ben segnalato, tanto che come si può vedere dall'immagine qui sopra, si capisce dove andare a cercare.
Prima cosa da fare in questi casi è aprire il file in questione che dal percorso mostrato nell'errore si evince sia nella sottocartella "libraries" di phpmyadmin. Il percorso completo è:
/usr/share/phpmyadmin/libraries/sql.lib.php
Aprite dunque il vostro gestore dei file nel percorso sopra indicato.
Il file, è ovviamente in sola lettura essendo in una cartella di sistema. Per poterlo scrivere dovete per forza aprirlo come amministatore. Potete farlo attraverso terminale attraverso la riga di comando:
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
Oppure potete utilizzare un metodo che potrebbe risultarvi utile anche per altre innumerevoli cose: aggiungere lo script open as administator al menu contestuale (tasto dx) del mouse che ho già trattato un un altro articolo:
Ubuntu - Open as administrator
Una volta aperto il file in modalità amministratore, prima di procedere con la sua modifica, è bene effettuarne una copia di backup per poter eventualmente tornare alla situazione di origine se qualcosa andasse storto.
Potete farlo direttamente dalla GUI del vostro gestore dei file o attraverso riga di comando:
sudo cp /usr/share/phpmyadmin/libraries/sql.lib.php /usr/share/phpmyadmin/libraries/sql.lib.php.bak
L'effetto sarà creare una copia identica del file sql.lib.php nella stessa posizione dell'originale aggiungendo ad esso l'estensione ".bak" utile a ricordarci che ne è una semplice copia.
Fatto?
Procediamo con la modifica:
L'errore si deve ad una sintassi poco gradita alla versione di PHP 7.2. Basterà aggiungere un paio di parentesi nelle posizioni giuste per risolvere questo problema.
La riga 613 del file sql.lib.php si presenta così:
0
|| (count($analyzed_sql_results[] == 1)
La sostituiremo con la seguente:
0
|| ((count($analyzed_sql_results[]) == 1)
Salvate il file. Se non lo avete salvato in modalità amministatore ora dovrebbe avvisarvi che il file è in sola lettura, altrimenti vi consentirà di salvare la modifica appena fatta.
Tornate a phpMyAdmin e ricaricate la pagina (F5 da tastiera).
L'errore dovrebbe ora essere sparito. Se non avesse avuto effetto, prima di concludere che questo piccolo hack non abbia avuto l'effetto sperato, riavviate il server Apache con il comando da terminale:
sudo service apache2 restart
Se non vuoi leggere l'articolo o preferisci vedere il procedimento, guarda il video:
Sperando che questo articolo vi sia stato utile, se hai qualche suggerimento o domanda da farmi posta un commento qui sotto.