Utiliser PHP en mode console  

Dans cet article nous allons voir comment utiliser PHP en mode console à travers quelques questions essentielles et deux exemples d'utilisation.

Introduction :

Il est possible d'utiliser PHP en mode console. On parle parfois de php-cli.

Installation

Par défaut l'executable php-cli est disponilbe. Sous windows on trouve le fichier php-cli.exe dans le répertoire de PHP. En PHP 5 cet executable a été renommé php-win.exe.

Sous Linux (selon votre distribution ou les paquets pré compilés que vous utilisez) il peut arriver que le support PHP en mode console soit désactivé.
Pour vérifier son installation il vous suffit de consulter le ./configure de votre phpinfo() si vous avez --disable-cli c'est qu'il est désactivé. Il vous faudra alors recompiler PHP en remplacant ---disable-cli par --enalbe-cli.

Utilisation courante

Vous pourriez vous demander "Mais dans la pratique a quoi cela va t il me servir ?". La réponse est toute simple : A automatiser des taches.

Par exemple vous pourriez faire un programme qui lit un repertoire et créé des miniatures de chaque image qu'il rencontre. Vous pourriez également renommer massivement les fichier d'un répertoire, voir encore lancer des traitements complexes sur une base données.

Pour executer un programme PHP il vous suffit d'ouvrir un terminal puis de taper php fichier.php et fichier.php sera éxécuté.

Mise en pratique :

Nous allons maintenant voir deux exemples d'utilisation :

  • Un script simple permettant de lister les fichiers contenu dans un répertoire
  • Un script montrant comment passer des arguments à votre programme

Listeur de fichiers basique :

Afin de mettre en pratique les notions théoriques abordées précedement nous allons créer un programme qui nous affiche tous les fichiers présent dans le répertoire courant.

liste_fichiers.php
  1. <?php
  2. /*
  3. Fichier : liste_fichiers.php
  4. Licence : GPL
  5. Auteur : fab -  fab@creatixnet.comCet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
  6. */
  7. $folders = array();
  8. $files = array();
  9.  
  10. $dir = getcwd();
  11. $folder = opendir($dir);
  12. while ($name = readdir($folder)) {
  13.   if($name == '.' || $name == '..') {
  14.     continue;
  15.   }else{
  16.     if(is_dir($name)) { // c'est un répertoire donc on l'ajoute à $folders
  17.       array_push($folders,$name);
  18.     }else { // c'est pas un rep donc c'est un fichier donc on l'ajoute à $files
  19.       array_push($files,$name);
  20.     }
  21.   }
  22. }
  23. closedir($folder);
  24. $count_folders = count($folders);
  25. $count_files = count($files);
  26. $total = $count_folders + $count_files;
  27. sort($folders);
  28. sort($files);
  29. for($i=0;$i<$count_folders;$i++) {
  30.   echo "Rep : " .$folders[$i]. "\n";
  31. }
  32. for($i=0;$i<$count_files;$i++) {
  33.   echo "Fichier : " .$files[$i]. "\n";
  34. }
  35. echo "Total : " .$count_folders. " folders \n";
  36. echo "Total " .$count_files. " files \n";
  37. echo "Total : ".$total." élements \n";
  38. ?>

php liste_fichiers.php devrait vous afficher quelque chose comme :

 
Rep : cnet
Rep : home
Rep : imgs
Rep : rss
Rep : svn
Rep : vhffs
Rep : zip
Fichier : bbcode.php
Fichier : liste_fichiers.php
Total : 6 folders
Total 2 files
Total : 8 élements
 

Passer des arguments à votre programme

Pour le passage d'arguments avec php-cli , c'est la même méthode qu'en C à savoir argc et argv mais cette fois ces variables sont contenus dans le tableau $_SERVER.

  • $_SERVER['argc'] : nombre d'arguments contenu dans argv
  • $_SERVER['argv'] : est un array qui contient les arguments passé dans la ligne de commande , en fait c'est un explode de la ligne de commande à chaque espace.

print_r.php
  1. <?php
  2. print_r($_SERVER['argv']);
  3. ?>

 

php print_r.php bonjour comment va devrait vous afficher :

 Array

(

    [0] => print_r.php

    [1] => bonjour

    [2] => comment

    [3] => va

)

Le nom du fichier et lui aussi contenu dans le tableau $_SERVER['argv'] , il sera donc aussi compté dans $_SERVER['argc'] qui en fait n'est qu'un : count($_SERVER['argv']). Il vous faudra donc bien y penser dans votre code.


Retour à l'accueil des articles