Unterschiede zwischen CLI und CGI
PHP kann in verschiedenen Umgebungen laufen. Die gebräuchlichste Umgebung ist CGI, die läuft, wenn PHP eine HTTP-Anfrage verarbeitet. Es ist jedoch auch möglich, ein PHP-Skript über das Terminal auszuführen. In diesem Fall handelt es sich um eine so genannte CLI-Aufgabe (Command-line interface).
Die wichtigsten Unterschiede zwischen CLI und CGI
- Im Gegensatz zu
CGI SAPIschreibtCLIstandardmäßig keine Header in die Ausgabe. - Es gibt einige
php.ini-Direktiven, die inCLI SAPIaußer Kraft gesetzt werden, weil sie in einer Shell-Umgebung bedeutungslos sind: html_errors: CLI-Standardwert istFALSE.- implicit_flush": Standard-CLI-Wert ist "TRUE".
- Maximale Ausführungszeit: Der Standardwert der CLI ist 0 (unbegrenzt).
- register_argc_argv": Standard-CLI-Wert ist "TRUE".
- Das Skript kann Kommandozeilenargumente akzeptieren! Die Variable "$argc" gibt die Anzahl der Argumente an, die an die Anwendung übergeben werden. Und das Feld "$argv" gibt Ihnen ein Array der tatsächlichen Argumente
- Es wurden 3 neue Konstanten für die Shell-Umgebung definiert:
STDIN,STDOUT,STDERR. Alle sind Dateihandler für das entsprechende Shell-Gerät. Zum Beispiel istSTDINein Datei-Handler fürfopen('php://stdin', 'r'). Sie können also eine Zeile ausSTDINwie folgt lesen:$strLine = trim(fgets(STDIN));. DasSTDINist bereits für Sie mit Hilfe derPHP CLIdefiniert. - Das PHP CLI ändert das aktuelle Verzeichnis nicht in das Verzeichnis des ausgeführten Skripts. Das aktuelle Verzeichnis für das Skript wäre das Verzeichnis, in dem Sie den PHP CLI-Befehl ausführen.
- Es gibt eine Reihe von NÜTZLICHEN Optionen für das PHP CLI. Damit können Sie einige wertvolle Informationen über Ihre PHP-Einrichtung und Ihr PHP-Skript erhalten oder es in verschiedenen Modi ausführen.
- In PHP 5 gab es einige Änderungen an den CLI- und CGI-Dateinamen. In PHP 5 wurde die CGI-Version in
php-cgi.exeumbenannt (früherphp.exe) und die CLI-Version befindet sich nun im Hauptverzeichnis (frühercli/php.exe). - In PHP 5 wurde auch ein neuer Modus eingeführt:
php-win.exe. Dies entspricht der CLI-Version, mit dem Unterschied, dass inphp-winnichts gedruckt wird und somit keine Konsole zur Verfügung steht (es wird keine "Dos-Box" auf dem Bildschirm angezeigt). Dieses Verhalten ist ähnlich wie beiPHP GTK.