Lister les modules PHP installés sur un serveur Linux
I. Présentation
Dans ce tutoriel, nous allons voir comment lister les modules PHP installés (et chargés) sur un serveur Linux, afin de voir quels sont les modules accessibles par le serveur Web. Cette manipulation très simple est pratique lorsque l'on se demande si un module PHP est bien installé et bien chargé, mais aussi pour identifier s'il manque le paquet correspond à un module chargé dans le fichier php.ini.
Dans cet exemple, je vais m'appuyer sur un serveur sous Debian 11, avec PHP 7.4 installé, mais si vous utilisez PHP 8.X, cela fonctionnera également.
II. Lister les modules PHP chargés (et compilés)
À partir de la console sous Linux, il y a un excellent moyen de lister les modules chargés et compilés sur le serveur local sur lequel on se trouve, grâce à cette commande toute simple :
php -m
Cette commande va tout simplement retourner une liste de modules, comme celle sur mon serveur :
Cette liste peut s'avérer assez longue, donc grâce à la commande "grep" on va pouvoir ajouter un filtre sur le résultat de la commande "php -m". Par exemple, si l'on veut vérifier la présence du module "curl" dans la liste, on va exécuter :
php -m | grep -i curl
Si la commande retourne un résultat, c'est que le module est dans la liste retournée par "php -m", sinon c'est qu'il n'est pas chargé sur le serveur. Un module qui n'est pas chargé n'est peut-être tout simplement pas activé dans le fichier de configuration "php.ini". Par contre, s'il est bien activé, c'est peut-être que le paquet n'est pas installé sur le serveur web : c'est pour cette raison que l'on peut avoir besoin de regarder la liste des paquets installés sur la machine.
III. Lister les paquets PHP
Sur une machine Debian, la commande "dpkg" permet d'obtenir des informations sur les paquets, y compris les paquets installés sur la machine locale. Grâce à l'option "--get-selections", on va pouvoir faire une recherche, donc dans notre cas il faut qu’on liste tous les paquets avec le terme "php". Ce qui donne :
dpkg --get-selections php*
Dans la commande ci-dessus, l'astérisque est important pour rechercher tous les paquets dont le nom commence par "php". Dans la liste des résultats, je vois bien le paquet "php-curl" correspondant à ma requête précédente, ce qui est cohérent.
D'ailleurs, on pourrait affiner le résultat de la commande dpkg sur le même principe que nous l'avions fait précédemment grâce à "grep" :
dpkg --get-selections php* | grep -i curl
Une autre écriture consiste à récupérer la liste de tous les paquets puis à filtrer directement avec "grep", ce qui donne :
dpkg --get-selections | grep -i php
Si vous utilisez plutôt Rocky Linux (la distribution qui remplace CentOS...), alors c'est Yum qu'il faudra solliciter. Voici un exemple :
yum list installed | grep -i php
Voilà, de cette façon vous avez l'embarras du choix ! Avec ces deux commandes, vous êtes en mesure de visualiser les paquets installés et chargés ! S'il vous manque un paquet, une commande du style "apt-get install" suivie du nom du paquet devrait régler l'affaire !
> dpkg –get-selections php* <
Sinon, dpkg -l | grep php , non ? 🤔
Excellent, merci pour l’aide 😉