Unterschiede zu anderen SAPIs
Beachtenswerte Unterschiede der CLI SAPI zu anderen SAPIs:
-
Anders als bei der CGI SAPI werden keine Header ausgegeben.
Obwohl die CGI SAPI eine Option bietet, HTTP-Header zu unterdrücken, gibt es keine gleichwertige Option, sie in der CLI SAPI anzuzeigen.
CLI wird standardmäßig im stillen Modus gestartet, dennoch gibt es die Optionen -q und --no-header aus Kompatibilitätsgründen noch, so dass Sie auch ältere CGI-Skripte noch benutzen können.
Es verändert das Arbeitsverzeichnis nicht zu dem des Skriptes. (Die Optionen -C und --no-chdir wurden aus Kompatibilitätsgründen beibehalten.)
Fehlermeldungen in Plaintext (keine HTML-Formatierung).
-
Es gibt bestimmte php.ini-Direktiven, die von der CLI SAPI außer Kraft gesetzt werden, weil sie in einer Kommandozeilenumgebung keinen Sinn ergeben.
Überschriebene php.ini-Direktiven Direktive CLI SAPI-Standardwert Kommentar html_errors FALSE
Es kann sehr schwierig sein, eine Fehlermeldung auf der Kommandozeile zu lesen, wenn sie mit all diesen bedeutungslosen HTML-Tags vollgestopft ist, deswegen wird diese Direktive auf FALSE
gesetzt.implicit_flush TRUE
Es ist normalerweise erwünscht, dass alle Ausgaben, die von print, echo und Konsorten kommen, sofort auf die Ausgabe geschrieben werden und nicht in einem Puffer gecacht werden. Sie können jedoch immer noch output buffering benutzen, wenn Sie die Standardausgabe aufschieben oder manipulieren wollen. max_execution_time 0 (unendlich) Da die Anwendungsbereiche von Kommandozeilenanwendungen deutlich unterschiedlicher sind als die von Web-Applikationen und da diese oft lange Laufzeiten besitzen, wird die maximale Ausführungszeit auf unendlich gesetzt. Wegen der unendlichen Möglichkeiten, PHP in register_argc_argv TRUE
Weil diese Einstellung auf
TRUE
gesetzt ist, werden Scripte die über die CLI SAPI ausgeführt werden, immer Zugriff auf argc (Anzahl der Argumente, die der Anwendung übergeben wurden) und argv (Array der eigentlichen Argumente) haben.Die PHP-Variablen $argc und $argv werden automatisch mit den entsprechenden Werten gefüllt, wenn die CLI SAPI benutzt wird. Diese Werte können auch in dem $_SERVER Array gefunden werden, beispielsweise: $_SERVER['argv'].
output_buffering FALSE
Auch wenn die php.ini Option fest auf
FALSE
gesetzt ist, sind dennoch die Output buffering Funktionen verfügbar.max_input_time FALSE
Die PHP CLI unterstützt GET, POST und File Uploads nicht.
Hinweis:
Diese Direktiven können nicht mit einem anderen Wert aus der Konfigurationsdatei php.ini oder einer eigenen (falls angegeben) initialisiert werden. Diese Einschränkung ergibt sich dadurch, dass diese Standardwerte angewandt werden, nachdem alle Konfigurationsdateien gelesen wurden. Dennoch können die Werte zur Laufzeit verändert werden (was aber nicht für alle dieser Direktiven einen Sinn ergibt, beispielsweise register_argc_argv).
Hinweis:
Es wird empfohlen ignore_user_abort für Kommandozeilenanwendungen zu setzen. Siehe ignore_user_abort() für weitere Informationen.
-
Um die Arbeit in der Kommandozeilenumgebung zu erleichtern, wurden einige Konstanten für Ein- und Ausgabestreams definiert.
-
Die CLI SAPI ändert das aktuelle Arbeitsverzeichnis nicht zu dem Verzeichnis des ausgeführten Skripts.
Beispiel #1 Beispiel, welches den Unterschied zu der CGI SAPI verdeutlicht:
<?php
// Unsere einfache Anwendung namens test.php
echo getcwd(), "\n";
?>Bei der CGI-Version ist die Ausgabe folgende:
$ pwd /tmp $ php -q another_directory/test.php /tmp/another_directory
Dies zeigt deutlich, dass PHP das aktuelle Verzeichnis auf das des ausgeführten Skriptes ändert.
Nutzung der CLI SAPI führt zu folgender Ausgabe:
$ pwd /tmp $ php -f another_directory/test.php /tmp
Dies ermöglicht eine größere Flexibilität beim Erstellen von Kommandozeilenanwendungen in PHP.
Hinweis:
Die CGI SAPI unterstützt das Verhalten der CLI SAPI durch Angabe der Option -C beim Starten von der Kommandozeile.
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-features.commandline.differences.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.