Unterschiede zu anderen SAPIs

Wesentliche 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, sodass auch ältere CGI-Skripte noch verwendet werden können.

    Es wechselt das Arbeitsverzeichnis nicht in das des Skriptes. (Die Optionen -C und --no-chdir wurden aus Kompatibilitätsgründen beibehalten.)

    Fehlermeldungen im Klartext (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 Die Standardeinstellung ist false, weil es sehr schwierig sein kann, Fehlermeldunge auf der Kommandozeile zu lesen, wenn sie mit bedeutungslosen HTML-Tags vollgestopft ist.
    implicit_flush true Auf der Kommandozeile ist es normalerweise erwünscht, dass alle Ausgaben, die von print, echo und Konsorten kommen, sofort angezeigt werden und nicht in einem Puffer zwischengespeichert werden. Es ist jedoch immer noch möglich, output buffering zu verwenden, um die Standardausgabe aufzuschieben oder zu manipulieren.
    max_execution_time 0 (unendlich) Da die Anwendungsbereiche von PHP auf der Kommandozeile wesentlich vielfältiger sind als in webbasierten Anwendungen und oft lange Laufzeiten besitzen, wird die maximale Ausführungszeit auf unendlich gesetzt.
    register_argc_argv true

    Weil diese Einstellung auf true gesetzt ist, werden Skripte, die über die CLI-SAPI ausgeführt werden, immer Zugriff auf argc (die Anzahl der Argumente, die der Anwendung übergeben wurden) und argv (das Array mit den übergebenen Argumenten) haben.

    Die PHP-Variablen $argc und $argv werden automatisch mit den entsprechenden Werten gefüllt, wenn die CLI-SAPI verwendet wird. Diese Werte können auch im Array $_SERVER gefunden werden, beispielsweise: $_SERVER['argv'].

    output_buffering false

    Auch wenn diese php.ini-Option fest auf false gesetzt ist, sind die Funktionen der Ausgabepufferung verfügbar.

    max_input_time false

    Die PHP-CLI unterstützt GET, POST und Dateiuploads 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 auf der Kommandozeilenumgebung zu erleichtern, wurden einige Konstanten für Ein- und Ausgabestreams definiert.

  • Die CLI SAPI wechselt das aktuelle Arbeitsverzeichnis nicht ins Verzeichnis des ausgeführten Skripts.

    Beispiel #1 Beispiel, welches den Unterschied zur 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 anderes_verzeichnis/test.php
    /tmp/anderes_verzeichnis
    

    Dies zeigt deutlich, dass PHP vom aktuellen Verzeichnis in das des ausgeführten Skriptes wechselt.

    Nutzung der CLI SAPI führt zu folgender Ausgabe:

    $ pwd
    /tmp
    
    $ php -f anderes_verzeichnis/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.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Definition von Stored Procedures - eine Einführung

Stored Procedures sind vordefinierte SQL-Codeblöcke, die in einer Datenbank gespeichert sind und bei Bedarf aufgerufen werden können. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: mySQL-Tutorials

Wie kann man komplexe Abfragen mit SQL-Querys In MySQLi effektiv durchführen?

In diesem MySQL-Tutorial wird erklärt, wie komplexe SQL-Abfragen in MySQLi effizient durchgeführt werden können. Wir werden uns mit verschiedenen Aspekten der Datenbankabfrage beschäftigen und spezifische Methoden kennenlernen. ...

TheMax

Autor : TheMax
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

[Wichtig] Anmeldung im Forum

Guess the hidden word using logic and deduction in the engaging game of Wordle. Wordle nyt (https://wordlenytimes.net/) ​

Geschrieben von lenytimes am 19.04.2024 19:21:45
Forum: Fragen/Vorschläge zum Forum
Professioneller Webentwickler & Webdesigner

Of course, here is the translation: Hello, Thank you for your interest in the long-term project. Your extensive skills and experience in web dev ...

Geschrieben von Athelstan am 15.04.2024 09:25:39
Forum: Jobgesuche
Wir stellen unsere SEO-Agentur vor

Hallo In der heutigen digitalen Welt war es für Unternehmen noch nie so einfach, ihre Reichweite weltweit zu vergrößern. Wenn Sie außerhalb I ...

Geschrieben von thomasmuller am 14.04.2024 07:18:33
Forum: User stellen sich vor
Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

Hallöchen zusammen, ich versuche derzeit unseren Excel-Spielplan in PHP zu überführen. Eigentlich bin ich auch shon fertig - wenn da nicht dies ...

Geschrieben von derH0st am 11.04.2024 15:58:37
Forum: PHP Developer Forum