Communiquer avec PHP en CLI (ligne de commande)

    21:57 30 11 2005

J’ai dernièrement ajouté des fonctionnalités de gestion des extensions PHP à WAMP5. Pour cela, j’ai créé quelques scripts PHP en CLI appelés par le gestionnaire de WAMP. Mais comment communiquer avec PHP, lui passer des paramètres ou encore interagir avec l’utilisateur?

Je me suis donc penché sur la question et voici mes conclusions.

Passer des paramètres à un script CLI :

Pour cela , il suffit de fournir ces paramètres lors de l’appel au script. Attention, on a l’habitude de les passer grâce à la syntaxe HTTP. Quelque chose du genre :

« php index.php?toto=valeur »

Cela ne fonctionnera pas en CLI, cette syntaxe est liée au protocole HTTP (méthode GET), PHP cherchera un fichier s’appelant « index.php?toto=valeur ». en ligne de commande, il suffira d’ajouter ces paramètres à la suite de l’appel au script :

« php index.php valeur »

On pourra alors accéder aux paramètres grâce aux tableaux $_SERVER['argv'] et $_SERVER['argc']. argc permettra de connaître le nombre de variables passées à PHP, argv permettra d’accéder à ces paramètres. Dans l’exemple précèdent

$_SERVER['argv'][0] vaudra « index.php »
$_SERVER['argv'][1] vaudra « valeur »

Interagir avec l’utilisateur lors de l’exécution du script :

Il peut arriver que l’on ait besoin de poser des question à l’utilisateur, récupérer des variables. Dans le cas de WAMP5, un des scripts permet d’ajouter une extension dans le php.ini, il faut donc que l’utilisateur puisse taper le nom de cette extension. Pour cela, il suffit d’utiliser l’entrée standard STDIN.

La commande

$newext_name = trim(fgets(STDIN));

permet de lire ce qui arrive de STDIN jusqu’à ce qu’il y ait un retour chariot. Concrètement, cela permet à l’utilisateur de taper tout ce qu’il veut jusqu’à ce qu’il tapes sur la touche Entrer. le contenu tapé est alors récupéré dans la variable $newext_name.
Un petit echo avant cette commande permettra de poser une question à l’utilisateur. Par exemple :

echo ‘Veuillez taper quelque chose :’;
$newext_name = trim(fgets(STDIN));

Le contenu tapé par l’utilisateur sera récupéré dans la variable $newext_name.

En conclusion, si vous voulez des exemples pratiques de ces méthodes, téléchargez la dernière version de WAMP5 (1.5.0 à l’heure où j’écris ce post) et regardez ce qui se trouve dans le répertoire scripts ;-)


Actions

Informations

2 réponses à “Communiquer avec PHP en CLI (ligne de commande)”

5 09 2007
Xethorn (09:25:14) :

Cette solution fonctionne uniquement lorsque le paramètre « register_argc_argv » de la configuration de php est sur « on ».

12 04 2011
Cosinus (10:44:42) :

Merci beaucoup, très clair, et très simple.