Différences entre CLI et CGI
PHP peut fonctionner dans différents environnements. L'environnement le plus courant est CGI, qui s'exécute lorsque PHP traite une requête HTTP. Cependant, il est également possible d'exécuter un script PHP à partir du terminal. Dans ce cas, il s'agit d'une tâche dite CLI (Command-line interface).
Les différences les plus importantes entre CLI et CGI
- Contrairement à
CGI SAPI,CLIn'écrit pas d'en-tête sur la sortie par défaut. - Il y a certaines directives
php.iniqui sont remplacées dansCLI SAPIparce qu'elles n'ont pas de sens dans un environnement shell : html_errors: La valeur par défaut de CLI estFALSE.implicit_flush: la valeur par défaut de l'interface CLI estTRUE.max_execution_time: la valeur par défaut en CLI est0(illimité)register_argc_argv: la valeur CLI par défaut estTRUE.- Le script peut prendre des arguments en ligne de commande ! La variable
$argcvous donne le nombre d'arguments passés à l'application. Et le champ$argvvous donne un tableau d'arguments réels - Il y a 3 nouvelles constantes définies pour l'environnement shell :
STDIN,STDOUT,STDERR. Tous sont des gestionnaires de fichiers pour le périphérique shell correspondant. Par exemple,STDINest un gestionnaire de fichier pourfopen('php://stdin', 'r'). Vous pouvez donc lire une ligne deSTDINcomme ceci :$strLine = trim(fgets(STDIN));. LeSTDINest déjà défini pour vous en utilisant lePHP CLI. - Le PHP CLI ne change pas le répertoire courant en répertoire du script en cours d'exécution. Le répertoire courant du script est le répertoire dans lequel vous exécutez la commande PHP CLI.
- Il y a un certain nombre d'options UTILES disponibles pour le CLI de PHP. Ce qui vous permet d'obtenir des informations précieuses sur votre configuration php, votre script php ou de l'exécuter dans différents modes.
- Dans PHP 5, il y a eu quelques changements dans les noms de fichiers CLI et CGI. Dans PHP 5, la version CGI a été renommée en
php-cgi.exe(anciennementphp.exe) et la version CLI est maintenant située dans le répertoire principal (anciennementcli/php.exe). - Un nouveau mode a également été introduit dans PHP 5 :
php-win.exe. C'est équivalent à la version CLI, sauf que dansphp-winrien n'est imprimé, et ne fournit donc pas de console (aucune "boîte à dos" n'est affichée à l'écran). Ce comportement est similaire à celui dePHP GTK.