PHP : résoudre l'erreur count(): Parameter must be an array or an object that implements Countable

PHP : résoudre l'erreur count(): Parameter must be an array or an object that implements Countable Sous Linux, une version de phpMyAdmin retourne le message d'erreur lorsque vous souhaitez afficher le contenu d'une table importée depuis un backup.

L'outil phpMyAdmin est devenu indispensable pour les développeurs PHP travaillant avec une base de données Mysql ou Maria DB. Il est fourni dans l'utilitaire Wamp et ses déclinaisons Linux et Mac LAMP et MAMP. Sous Linux, une version de phpMyAdmin retourne un message d'erreur lorsque vous souhaitez afficher le contenu d'une table importée depuis un backup. Le message "count(): Parameter must be an array or an object that implements Countable" s'affiche alors à l'écran.

Cette erreur est due à une faute qui est présente dans le code d'un fichier de phpMyAdmin. Pour corriger cette erreur, ouvrez le fichier "/usr/share/phpmyadmin/libraries/sql.lib.php". Il faut être administrateur pour éditer le fichier. La solution la plus simple consiste à ouvrir un terminal et à faire appel à un éditeur de texte comme VI ou Nano avec la commande "sudo" :

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

Une fois dans le fichier, il faut ajouter les parenthèses manquantes à la ligne "count($analyzed_sql_results['select_expr'] == 1)" pour corriger l'erreur :

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

Il ne reste plus qu'à redémarrer le serveur Apache. La commande dépend du système d'exploitation que vous utilisez car tous n'utilisent pas les mêmes outils pour gérer les services. Sur les versions récentes de Debian et d'Ubuntu, il faut faire appel à la commande "systemctl" :

sudo systemctl restart apache2

Si vous travaillez sur un système Red Hat ou sa dérivée Fedora, vous pouvez utiliser la commande "service" :

sudo service apache2 restart

Si vous souhaitez une version plus rapide, la commande suivante permet d'effectuer automatiquement la correction dans le fichier sans avoir à l'ouvrir et rechercher la ligne.

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

Vous devrez quand même redémarrer le service Apache.

PHP