Aktueller Standort: Startseite> Neueste Artikel> Die Rolle und die Einschränkungen von Header () im PHP -CLI -Modus

Die Rolle und die Einschränkungen von Header () im PHP -CLI -Modus

M66 2025-05-30

In der PHP -Programmierung ist die Funktion Header () ein sehr häufiges Tool zum Senden von RAW -HTTP -Header -Informationen an den Client, z. B. die Umleitung festlegen, den Inhaltstyp angeben, Cache -Steuerung usw. kann jedoch noch funktionieren, wenn wir das PHP -Skript im Modus ausführen? Dieser Artikel gibt Ihnen eine detaillierte Antwort.

Was ist der PHP -CLI -Modus?

Zunächst müssen wir verstehen, was das PHP -CLI -Muster ist. CLI (Befehlszeilenschnittstelle) besteht darin, PHP -Skripte direkt über die Befehlszeile auszuführen, anstatt sie über einen Webserver (wie Apache und Nginx) zu analysieren. Normalerweise treten wir ein:

 php script.php

In diesem Fall fungiert PHP nicht mehr als Tool zum Generieren von Webseiten, sondern ist nur ein normaler Skript -Executor.

Die Funktion der Header () -Funktion

Die Hauptfunktion der Header () -Funktion besteht darin, HTTP -Headerinformationen an den Client (Browser) zu senden, z. B.:

 header('Location: https://m66.net/welcome');
exit;

Dieser Code wird den Browser angeben, sich in die angegebene URL zu leiten.

Hinweis: Header () gibt den tatsächlichen Inhalt nicht aus, sondern nur den Antwortheader . Mit anderen Worten, seine Rolle hängt vollständig vom HTTP -Protokoll zwischen PHP und dem Webserver ab.

Kann Header () noch im CLI -Modus verwendet werden?

Direkte Antwort: Es kann nicht verwendet werden oder es macht keinen Sinn, wenn Sie es verwenden .

Die Gründe sind wie folgt:

  • Im CLI -Modus schreibt PHP die Ausgabe direkt in die Standardausgabe (STDOut) ohne HTTP -Protokoll, ohne Anforderungsheader und ohne Antwortheader.

  • Die Funktion Header () überprüft intern, ob es in einer Umgebung mit SAPI (Server API) CLI ausgeführt wird. In diesem Fall generiert es beim Aufrufen keinen echten HTTP -Header und meldet keinen Fehler, aber das Ergebnis ist nur, dass es keinen Einfluss auf STDOut hat.

Führen Sie beispielsweise den folgenden Code aus:

 <?php
header('Content-Type: application/json');
echo json_encode(['status' => 'ok']);

In einer Webumgebung erhält der Browser den Header vom Typ Content-Typ und erkennt ihn als JSON. Aber rennen Sie unter der CLI:

 php script.php

Sie werden nur die Ausgabe sehen:

 {"status":"ok"}

Weil das Terminal HTTP -Header überhaupt nicht versteht oder handhaben.

Einschränkungen und Vorschläge im CLI -Modus

Zusammenfassen:
? Der Anruf bei Header () unter CLI meldet keinen Fehler, entspricht jedoch einer ungültigen Operation.
? Es werden keine HTTP -Antwort -Headers gesendet, da die CLI keine HTTP -Schicht hat.
? Sie können weiterhin Echo , Print_r und andere Funktionen verwenden, um Text an das Terminal auszugeben.

Wenn Sie beim Schreiben von CLI -Skripten auch Header () anrufen, wird empfohlen:

  • Bestätigen Sie, ob der Code sowohl das Web als auch die CLI dient. Wenn ja, ist es am besten, die SAPI -Erkennung hinzuzufügen: