PHP-CLI cet outil méconnu

Cet article a été publié depuis plus de 6 mois, cela signifie que le contenu peut ne plus être d'actualité.

De nombreux développeurs travaillent avec PHP pour concevoir des sites ou des applications dans des environnements Web. On commence même à voir apparaître de nombreux outils utilisant PHP en ligne de commande. Pourtant ils sont peu nombreux à connaitre les possibilités offertes par PHP-CLI.

Prenons par exemple le cas d'un développeur PHP souhaitant tester une fonction PHP afin de l'utiliser. Je ne compte plus le nombre de développeurs ayant créé un fichier test.php afin de tester du code (fichier exécuté aussi bien via un serveur Web qu'en ligne de commande).

Effectivement, il est fréquent que les développeurs ignorent que PHP-CLI fournit un shell interactif permettant d'exécuter du code PHP (et donc de tester une fonction par exemple). Pour démarrer ce dernier, il suffit d'utiliser la commande php -a.

Prenons maintenant le cas du développeur qui souhaite afficher les informations de configuration PHP. Là encore, de nombreuses personnes créeront un fichier contenant un appel à la fonction phpinfo(). PHP-CLI fournit pourtant une option permettant d'afficher ces informations au travers de l'option -i.

De même si phpinfo() est également utilisé pour connaitre les modules PHP activées sur la machine, l'option -m permet d'obtenir la liste des modules actuellement actifs.

Il est de plus en plus fréquent d'utiliser des applications PHP en ligne de commande. L'exemple le plus courant est très certainement Composer. N'avez-vous jamais lancé un composer update et obtenu en réponse un message du genre Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted ?

Dans ce cas-là, il n'est pas toujours possible de modifier temporairement la configuration décrite dans le fichier php.ini. Vous me direz qu'il est toujours possible d'utiliser un appel à la fonction ini_set. Mais cela vous obligera à modifier votre code. Pour éviter cela (car en plus de ne pas être propre, c'est parfois impossible à mettre en oeuvre), PHP-CLI vous donne la possibilité de modifier une valeur de configuration au travers de l'argument -d.

Par exemple pour exécuter Composer avec une limite mémoire à 1 Go, il est possible d'utiliser la commande suivante :

php -d memory_limit=1024M /usr/local/bin/composer update

Il est bien évidemment possible de cumuler les variables de configuration à modifier. Vous pouvez donc appelez Composer en activer dynamiquement une extension PHP :

php -d memory_limit=1024M -d extension=blackfire.so composer.php

N'hésitez donc pas à découvrir ou redécouvrir les nombreuses possibilités de PHP-CLI, cela pourra vous servir et vous faciliter la vie au quotidien.