Manuel PHP

Table des matières

Préface
I. Au moment de commencer
II. Installation et configuration
III. Référence du langage
IV. Sécurité
V. Caractéristiques
VI. Référence des fonctions
VII. PHP et le moteur interne Zend
VIII. FAQ : foire Aux Questions
IX. Annexes
Remerciements



Chapitre 43. Utiliser PHP en ligne de commande

Depuis la version 4.3.0, PHP supporte un nouveau type de SAPI (Server Application Programming Interface, c’est-à-dire Interface de Programmation d’Applications Serveur) appelé CLI, ce qui signifie Command Line Interface et se traduit par Interface de Ligne de Commande. Comme son nom l’indique, ce type SAPI cible les applications shell (ou desktop), écrites en PHP. Il y a un certain nombre de différences entre le type CLI SAPI et les autres SAPI expliqués dans ce chapitre. Il convient de préciser que CLI et CGI sont des SAPI différentes, bien qu’ils partagent des comportements similaires.

Le CLI SAPI a été publié pour la première fois avec la version PHP 4.2.0, mais il était expérimental, et devait être explicitement activé avec l’option –enable-cli lorsque vous exécutez le script ./configure. Depuis PHP 4.3.0, le CLI SAPI n’est plus expérimental, et l’option –enable-cli est activée par défaut. Vous pouvez utiliser l’option –disable-cli pour le désactiver.

Depuis PHP 4.3.0, le nom, l’emplacement et l’existence des binaires CLI/CGI vont dépendre de la façon dont PHP est installé sur votre système. Par défaut, en exécutant make, les deux binaires CGI et CLI sont compilés et nommés respectivement sapi/cgi/php et sapi/cli/php dans votre répertoire source PHP. Vous remarquerez que les deux se nomment php. Ce qui se passe ensuite pendant le make install dépend de votre ligne de configuration. Si un module SAPI, apxs par exemple, a été choisi pendant la configuration, ou que l’option –disable-cgi a été activée, le CLI est copié dans {PREFIX}/bin/php pendant le make install. Si, par exemple, –with–apxs figure dans votre ligne de configuration, le CLI est copié dans {PREFIX}/bin/php pendant le make install, sinon c’est le CGI qui y est placé. Si vous voulez forcer l’installation du binaire CGI, lancez make install-cli après le make install. Sinon, vous pouvez aussi spécifier –disable-cgi dans votre ligne de configuration.

Note : Du fait que les deux options –enable-cli et –enable-cgi sont activées par défaut, avoir simplement –enable-cli dans votre ligne de configuration n’implique pas nécessairement que le CLI soit renommé en {PREFIX}/bin/php pendant le make install.

Les paquets Windows entre PHP 4.2.0 et PHP 4.2.3 installaient le CLI en tant que php-cli.exe et laissaient le CGI en tant que php-cli.exe dans le même répertoire. Depuis PHP 4.3.0, le paquet Windows installe le CLI en tant que php.exe dans un répertoire à part nommé cli, donc cli/php.exe. Depuis PHP 5, le CLI est installé dans le répertoire principal en tant que php.exe. La version CGI est nommée quand à elle php-cgi.exe.

Depuis PHP 5, un nouveau fichier php-win.exe est installé. C’est l’équivalent de la version CLI à ceci près qu’il n’affiche rien et ainsi ne fait pas apparaître de console (aucune fenêtre “dos” n’apparaît à l’écran). Ce comportement est similaire à celui de php-gtk. Vous pouvez l’activer avec l’option –enable-cli-win32.

Quel SAPI est installé ? : À partir d’un interpréteur de commande, lancer php -v vous dira si php est en version CGI ou CLI. Vous pouvez aussi consulter la fonction **php_sapi_name()** et la constante PHP_SAPI.
Note : Une page man de manuel Unix a été ajoutée avec PHP 4.3.2. Vous pouvez la consulter en tapant man php dans votre interpréteur de commande.

Les différences les plus notables entre le CLI SAPI et les SAPI sont :

Contrairement au CGI SAPI, aucun en-tête HTTP n’est écrit dans le résultat.

Bien que le CGI SAPI fournisse un moyen de supprimer les en-têtes HTTP, il n’y a pas moyen d’activer les en-têtes HTTP dans le CLI SAPI.
CLI est lancé en mode silencieux par défaut, bien que les options -q et –no-header soient gardées pour rester compatible avec les anciennes versions CGI.
Il ne change pas le répertoire courant en celui du script. (les options -C et –no-chdir sont gardées par souci de compatibilité)
Messages d’erreurs en texte brut (pas de formatage HTML).

Il y a plusieurs directives du php.ini qui sont ignorées par le CLI SAPI, car elles n’ont pas de sens en environnement shell :

Tableau 43-1. Directives php.ini ignorées

Directive Valeur par défaut pour CLI SAPI Commentaire
html_errors FALSE Il peut être bien difficile de lire les messages d’erreur sur un terminal lorsqu’ils sont noyés dans des balises HTML sans grand intérêt. Par conséquent, cette directive est forcée à FALSE.
implicit_flush TRUE Il est souhaitable que tout affichage en provenance de **print()**, **echo()** et consorts, soit immédiatement affiché dans le terminal, et non pas placé dans un buffer quelconque. Vous pouvez toujours utiliser la bufferisation de sortie si vous voulez retarder un affichage, ou bien en manipuler le contenu une dernière fois.
max_execution_time 0 (sans limite) Étant données les possibilités infinies de PHP en environnement shell, le temps d’exécution maximal d’un script PHP a été rendu illimité. Alors que les scripts destinés au web doivent s’accomplir en une fraction de seconde, il arrive que les scripts shell requièrent bien plus de temps.
register_argc_argv TRUE En donnant la valeur de TRUE à cette directive, vous aurez toujours accès à la variable argc (représentant le nombre d’arguments passés à l’application) et argv (le tableau contenant les arguments passés) dans le CLI SAPI.Depuis PHP 4.3.0, les variables $argc et $argv sont définies et remplies avec les valeurs appropriées, en utilisant CLI SAPI. Avant cette version, la création de ces variables était liée au comportement des versions CGI et MODULE, qui requièrent l’activation de la directive register_globals. Indépendamment de la version ou de la valeur de register_globals, vous pouvez toujours accéder à $_SERVER et $HTTP_SERVER_VARS. Par exemple : $_SERVER[’argv’]

Note : Ces directives ne peuvent pas être initialisées avec d’autres valeurs dans le fichier php.ini ou par une autre méthode. C’est une limitation, car ces valeurs par défaut s’appliquent une fois que tous les autres fichiers de configuration ont été analysés. Cependant, ces valeurs peuvent être modifiées durant l’exécution (ce qui n’est pas logique pour certaines directives, comme register_argc_argv).

Pour faciliter le travail en environnement shell, les constantes suivantes sont définies :

Tableau 43-2. Constantes spécifiques au CLI

Constante Description
STDIN Un descripteur de fichier déjà disponible vers stdin. Cela évite de l’ouvrir avec
<php
$stdin = fopen(’php:stdin’, ‘r’);
?>
Si vous voulez lire une seule ligne depuis stdin, vous pouvez utiliser <?php
$line = trim(fgets(STDIN));
lit une seule ligne depuis STDIN
fscanf(STDIN, “%d\n”, $number); lit les nombres depuis STDIN
?> | | STDOUT | Un descripteur de fichier déjà disponible vers stdout. Cela évite de l’ouvrir avec&lt;?php
$stdout = fopen(’php:
stdout’, ‘w’);
?&gt;
STDERR

Travail collaboratif

Contribuez, en ajjoutant des elements a cette page de manuel :

Merci de votre aide
L’equipe Php.fr

 


Index | Afficher le texte source | Anciennes révisions | Derniers changements | Connexion
©2007 Wiki Copyright