Différence avec les autres SAPIs
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'est pas possible 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 :
Directives php.ini ignorées Directive Valeur par défaut pour CLI SAPI Commentaire html_errors FALSE
Par défaut à FALSE
, vu qu'il peut être bien difficile de lire des messages d'erreur sur un terminal lorsqu'ils sont noyés dans des balises HTML non-interprétées.implicit_flush TRUE
Dans un terminal, il est généralement souhaitable que tout affichage en provenance de print, echo et autres, soit immédiatement affiché, et non pas placé dans un buffer quelconque. Néanmoins, il est toujours possible d'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) PHP dans un terminal est susceptible d'être utilisé pour des tâches bien plus diverses que dans des scripts web, et vu que cela prend généralement beaucoup de temps, ce paramètre sera défini par défaut à 0 permettant ainsi d'être illimité. register_argc_argv TRUE
La définition à
TRUE
de cette directive signifie que les scripts exécutés via le SAPI CLI auront toujours accès à argc (représentant le nombre d'arguments passés à l'application) et argv (le tableau contenant les arguments passés).Les variables PHP $argc et $argv sont automatiquement définies et remplies avec les valeurs appropriées, lors de l'utilisation du SAPI CLI. Ces valeurs peuvent également être trouvées dans la variable $_SERVER, par exemple : $_SERVER['argv'].
output_buffering FALSE
Même si cette configuration INI est codée en dur à
FALSE
, les fonctions relatives à l'affichage du buffer sont disponibles.max_input_time FALSE
Le PHP CLI ne supporte pas GET, POST et le téléchargement de fichiers.
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).
Note:
Il est recommandé de définir ignore_user_abort pour les scripts en ligne de commande. Voir la fonction ignore_user_abort() pour plus d'informations.
-
Pour faciliter le travail en environnement shell, plusieurs constantes sont définies pour les flux I/O.
-
Le CLI SAPI ne transforme pas le dossier courant en dossier d'exécution du script.
Exemple #1 Exemple montrant la différence avec le SAPI CGI :
<?php
// Un test simple : affiche le dossier d'exécution */
echo getcwd(), "\n";
?>Lorsque vous utilisez la version CGI, l'affichage sera :
$ pwd /tmp $ php -q autre_dossier/test.php /tmp/autre_dossier
Cela montre clairement que PHP modifie le dossier courant, et utilise le dossier du script exécuté.
En utilisant le CLI SAPI, on obtient :
$ pwd /tmp $ php -f autre_dossier/test.php /tmp
Cela donne beaucoup plus de souplesse lorsque vous rédigez des scripts shell avec PHP.
Note:
Le CGI SAPI se comporte de la même façon que le CLI SAPI, en lui passant l'option -C , lorsque vous l'invoquez en ligne de commande.
Version en cache
21/11/2024 23:34:11 Cette version de la page est en cache (à la date du 21/11/2024 23:34:11) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-features.commandline.differences.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.