WP-CLI et mysqli

Symptôme

L’erreur est la suivante :

Error: Il semble que votre installation PHP ne possède pas l’extension MySQL nécessaire pour WordPress.

Veuillez vérifier que l’extension PHP mysqli est installée et activée.

Ou encore

PHP Warning: PHP Startup: Unable to load dynamic library ‘mysqli’ (tried: /usr/lib/php/20230831/mysqli (/usr/lib/php/20230831/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20230831/mysqli.so (/usr/lib/php/20230831/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0

Elle intervient lorsque vous appelez une commande de wp cli, comme wp plugin list ou wp maintenance deactivate.

Diagnostic

Elle suggère que l’extension mysqli, extension essentielle au fonctionnement de WordPress, n’est pas installée. Rassurez-vous : Si c’était le cas, votre site WordPress ne fonctionnerait pas du tout.

Vous avez probablement plusieurs version de PHP qui cohabitent sur votre serveur. Vous utilisez probablement php8.x-fpm pour servir un site web WordPress.

Lorsque vous invoquez wp sur votre serveur en ligne de commande, vous utilisez une autre version de php, ou en tous cas une version configurée différemment. Cette version, elle s’appelle php8.x-cli.

Vous avez donc dans votre configuration :

  • /etc
    • php
      • 8.x
        • fpm
          • php.ini
        • cli
          • php.ini

Par ailleurs il est également probable que votre version 8.x ne soit pas non plus la seule. Or lorsque vous appelez wp, il paraît plus cohérent de l’appeler avec la même configuration que le site web concerné.

En ligne de commande, le php utilisé ne possède pas mysqli car il n’en a pas besoin.

Tapez :

wp cli info

Ceci va vous afficher quelque chose du genre :

OS:	Linux 6.1.0-40-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
Shell:	/bin/bash
PHP binary:	/usr/bin/php8.5
PHP version:	8.5.2
php.ini used:	/etc/php/8.5/cli/php.ini
MySQL binary:	
MySQL version:	
SQL modes:	
WP-CLI root dir:	phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:	phar://wp-cli.phar/vendor
WP_CLI phar path:	/var/www/public
WP-CLI packages dir:	
WP-CLI cache dir:	/home/debian/.wp-cli/cache
WP-CLI global config:	
WP-CLI project config:	
WP-CLI version:	2.10.0

Vous voyez ici quel est le binaire utilisé et quelle est la configuration(php.ini) utilisée. Et, très probablement ce n’est pas la même version que le php-fpm qu’utilise votre site.

La commande wp est en réalité un raccourci de php wp-cli.phar. On ne peut donc pas configurer wp-cli pour qu’elle utilise telle ou telle version de php.

Alors comment faire ?

La solution est de faire nous-même un raccourci, qui lui, va forcer la version de php qu’on veut utiliser :

Admettons que nous souhaitons une commande wp8.3. Vous pourriez avoir plusieurs commandes différentes ainsi, une pour chaque version de php concernée.

sudo nano /usr/local/bin/wp8.3

Saisissez ceci dans le fichier ainsi créé :

#!/bin/bash
/usr/bin/php8.3 /usr/local/bin/wp "$@"

Explication :

  • /usr/bin/php8.3 force WP-CLI  utiliser PHP 8.3
  • /usr/local/bin/wp est notre commande WP-CLI (le phar renommé)
  • "$@" transmet tous les arguments (plugin list, core update, etc.)
# Rendre le fichier exécutable : 
sudo chmod +x /usr/local/bin/wp8.3

Désormais, au lieu d’appeler wp plugin list, appeler wp8.3 plugin list.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *