Position actuelle: Accueil> Derniers articles> Le rôle et les limites de l'en-tête () en mode CLI PHP

Le rôle et les limites de l'en-tête () en mode CLI PHP

M66 2025-05-30

Dans la programmation PHP, la fonction d'en-tête () est un outil très courant utilisé pour envoyer des informations d'en-tête HTTP brutes au client, telles que le réglage de la redirection, la spécification du type de contenu, le contrôle du cache, etc. Cet article vous donnera une réponse détaillée.

Qu'est-ce que le mode CLI PHP?

Premièrement, nous devons comprendre ce qu'est le modèle CLI PHP. CLI (interface de ligne de commande) consiste à exécuter directement les scripts PHP via la ligne de commande, plutôt que de les analyser via un serveur Web (comme Apache et Nginx). Habituellement, nous entrons:

 php script.php

Dans ce cas, PHP n'agit plus comme un outil pour générer des pages Web, mais n'est qu'un exécuteur de script normal.

La fonction de la fonction d'en-tête ()

La fonction principale de la fonction d'en-tête () est d'envoyer des informations d'en-tête HTTP au client (navigateur), telles que:

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

Ce code indiquera au navigateur de rediriger vers l'URL spécifiée.

Mais Remarque: En-tête () ne publie pas le contenu réel, il modifie simplement l'en-tête de réponse . En d'autres termes, son rôle dépend entièrement du protocole HTTP entre PHP et le serveur Web.

En-tête () peut-il encore être utilisé en mode CLI?

Réponse directe: il ne peut pas être utilisé, ou il n'a pas de sens si vous l'utilisez .

Les raisons sont les suivantes:

  • En mode CLI, PHP écrit directement la sortie vers la sortie standard (STDOUT), sans protocole HTTP, sans en-tête de demande et sans en-tête de réponse.

  • La fonction Header () vérifie en interne si elle s'exécute dans un environnement avec CLI SAPI (API Server). Si c'est le cas, il ne générera pas de véritable en-tête HTTP lors de l'appel, et ne rapportera pas d'erreur, mais le résultat est simplement qu'il n'a aucun effet sur STDOUT.

Par exemple, exécutez le code suivant:

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

Dans un environnement Web, le navigateur reçoit l'en-tête de type contenu et le reconnaît comme JSON. Mais courez sous la CLI:

 php script.php

Vous ne verrez que la sortie:

 {"status":"ok"}

Parce que le terminal ne comprend pas ou ne gère pas du tout les en-têtes HTTP.

Limitations et suggestions en mode CLI

Pour résumer:
? L'appel à en-tête () sous CLI ne rapportera pas d'erreur, mais il équivaut à une opération non valide.
? Aucun en-têtes de réponse HTTP n'est envoyé car la CLI n'a pas de couche HTTP.
? Vous pouvez continuer à utiliser Echo , print_r et d'autres fonctions pour sortir du texte sur le terminal.

Si vous appelez également en-tête () lors de la rédaction de scripts CLI, il est recommandé:

  • Confirmez si le code sert à la fois le Web et la CLI. Si c'est le cas, il est préférable d'ajouter la détection de SAPI: