Annexe H. Utiliser PHP en ligne de commande

Les options de ligne de commande de PHP sont pratiques si vous souhaitez débugger ou tester votre installation PHP, mais elles sont aussi utiles si vous voulez utilisr PHP pour d'autres tâches que les scripts web.

Notez, que vous pouvez toujours rediriger le résultat d'un script PHP avec le caractère supérieur ( > ) : par exemple, php -q test.php > test.html écrira le résultat du script test.php sans les entêtes HTTP dans le fichier test.html, dans le même dossier.

Vous ne pouvez utiliser les options de ligne de commande que si vous avez installé PHP comme exécutable. Si vous avez créé un module Serveur, et que vous n'avez aucune version CGI disponible sur votre serveur, vous n'avez aucune chance de pouvoir utiliser ces options. Pour les utilisateurs Windows, les deux versions de PHP sont disponibles dans la distribution binaire, et l'exécutable s'appelle php.exe.

Cette liste d'options est valable pour PHP 4.0.6. Vous pouvez connaître la liste rééelle et avoir un peu d'aide avec l'option -h. Le résultat de la commande php -h ressemblera à peut près à ça :
Usage: php [-q] [-h] [-s [-v] [-i] [-f <file>] |  {<file> [args...]}
  -q             Quiet-mode.  Suppress HTTP Header output.
  -s             Display colour syntax highlighted source.
  -f <file>      Parse <file>.  Implies `-q'
  -v             Version number
  -C             Do not chdir to the script's directory
  -c <path>      Look for php.ini file in this directory
  -d foo[=bar]   Define INI entry foo with value 'bar'
  -e             Generate extended information for debugger/profiler
  -z <file>      Load Zend extension <file>.
  -l             Syntax check only (lint)
  -m             Show compiled in modules
  -i             PHP information
  -h             This help

Voici une liste des options les plus importantes, avec leur explication.

Tableau H-1. Option de ligne de commande

OptionDescription
-q Supprime les entêtes HTTP. Normalement, PHP affiche les entêtes HTTP pour le serveur web qui l'utilise pour les transmettre au client web. Lorsque vous creez des scripts en ligne de commande, ces entêtes sont inutiles.
-s Affiche le source en couleur du fichier dont le nom est fourni après. Cela revient à utiliser la fonction highlight_file() dans un script PHP.
-v Affiche la version du PHP courant. Par exemple, 4.0.6.
-C Normalement, PHP change le dossier de travail par celui d'exécution des scripts. Cela permet d'ouvrir des fichiers dans ce dernier dossier, sans avoir à faire le déplacement. Si vous voulez inactiver cette fonctionnalité, utilisez cette option.
-c Utilisez cette option pour spécifier un chemin différent pour le fichier php.ini. PHP ira chercher sa configuration dans ce dossier, au lieu de ses dossiers par défaut.
-d Avec cette option, vous pouvez modifier ces paramétrage particulier du php.ini, durant l'exécution du script.
-m En utilisant cette option, PHP affiche les modules de PHP et de Zend, leurs versions et le copyright de Zend.
-i Cette option appelle la fonction phpinfo(), et affiche le résultat. Si PHP ne fonctionne pas correctement,m il est conseillé d'utiliser la commande php -i et de voir si un message d'erreur est disponible, affiché à la place des tables d'options habituelles.
-h Avec cette option, vous obtenez de l'aide sur les options de ligne de commande.

L'exécutable PHP peut être utilisé pour exécuter des scripts PHP indépendamment du serveur web. Si vous êtes sous Unix, il vous faut ajouter une première ligne à vos scripts, et le rendre exécutable. Sous Windows, vous pouvez associer php.exe -q avec un double clic sur les fichiers en .php, ou bien vous pouvez faire un fichier batch pour exécuter ces scripts via PHP. La première ligne ajoutée au script sous Unix ne posera pas de problème sous Windows, et vos scripts resteront parfaitement portable d'un système à l'autre. Un exemple simple de script en ligne de commande est disponible ci-dessous.

Exemple H-1. Script à exécuter en ligne de commande (script.php)

#!/usr/bin/php -q
<?php

if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

This is a command line PHP script with one option.

  Usage:
  <?php echo $argv[0]; ?> <option>

  <option> can be some word you would like
  to print out. With the --help, -help, -h,
  or -? options, you can get this help.

<?php
} else {
    echo $argv[1];
}
?>

Dans ce script, nous avons utilisé la première ligne pour indiquer aue ce fichier doit être exécuté par PHP, et ne doit pas afficher les entêtes HTTP. Il y a deux variables que vous pouvez utiliser pour écrire des scripts de ligne de commande : $argc et $argv. Le premier est le nombre d'argument plus un (qui est le nom du fichier exécuté). Le second est un tableau contenant les arguments passé en ligne de commande, en commencant par le nom du script lui-même comme numéro zéro ($argv[0]).

Dans ce programme ci-dessus, nous vérifions qu'il y a plus ou moins d'un argument. Si cet argument vaut --help, -help, -h ou -?, alors on affiche le message d'aide, en affichant le nom du programme dynamiquement. Si on reçoit d'autres arguments, on les affiche simplement.

Si vous voulez exécuter le script ci-dessus sous Unix, vous devez le rendre exécutable, puis l'appeler sous cette forme : script.php echothis ou script.php -h. Sous Windows, vous pouvez faire un fichier batch comme ceci :

Exemple H-2. Fichier batch a pour exécuter en ligne de commande un script PHP (script.bat)

@c:\php\php.exe -q script.php %1 %2 %3 %4

En supposant que vous avez nommé le programme ci-dessus script.php, et que votre exécutable PHP est php.exe dans le dossier c:\php\php.exe, ce fichier batch exécutera votre script, avec vos options. script.bat echothis ou script.bat -h.