Unterschiede zwischen CLI und CGI

📅   15. 10. 2021
👤   Jan Barášek

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 SAPI schreibt CLI standardmäßig keine Header in die Ausgabe.
  • Es gibt einige php.ini-Direktiven, die in CLI SAPI außer Kraft gesetzt werden, weil sie in einer Shell-Umgebung bedeutungslos sind:
    • html_errors: CLI-Standardwert ist FALSE.
    • 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 ist STDIN ein Datei-Handler für fopen('php://stdin', 'r'). Sie können also eine Zeile aus STDIN wie folgt lesen: $strLine = trim(fgets(STDIN));. Das STDIN ist bereits für Sie mit Hilfe der PHP CLI definiert.
  • 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.exe umbenannt (früher php.exe) und die CLI-Version befindet sich nun im Hauptverzeichnis (früher cli/php.exe).
  • In PHP 5 wurde auch ein neuer Modus eingeführt: php-win.exe. Dies entspricht der CLI-Version, mit dem Unterschied, dass in php-win nichts gedruckt wird und somit keine Konsole zur Verfügung steht (es wird keine "Dos-Box" auf dem Bildschirm angezeigt). Dieses Verhalten ist ähnlich wie bei PHP GTK.

Jan Barášek     Mehr über den Autor

Der Autor arbeitet als leitender Entwickler und Softwarearchitekt in Prag. Er entwickelt und verwaltet große Webanwendungen, die Sie kennen und nutzen. Seit 2009 hat er einen reichen Erfahrungsschatz gesammelt, den er auf dieser Website weitergibt.

Ich werde Ihnen gerne helfen:

Kontakt