Comment PHP définit-il les en-têtes HTTP avec la fonction header ()?

J’apprends la programmation HTTP et Web et j’ai été surpris de découvrir que vous pouviez définir les en-têtes HTTP à l’aide de PHP. Je pensais que PHP était utilisé pour générer des pages Web HTML dynamics et créer des applications. Il me semble étrange que PHP puisse définir des en-têtes envoyés par le serveur Web (par exemple, Apache). Je sais que l’interpréteur PHP lit le fichier PHP et génère une sortie généralement sous forme de HTML.

Est-ce que ce processus fonctionne avec des tuyaux? A mon avis, le serveur Apache doit pouvoir recevoir des commandes de l’interpréteur PHP ou interpréter les fonctions PHP lui-même. Je pense que ce sont des processus distincts.

Quel mécanisme est utilisé par PHP pour définir les en-têtes de l’application du serveur Web (httpd ou Apache ou autre)

Tous les serveurs Web prennent-ils en charge la réception et la définition des en-têtes reçus via PHP?

Est-il possible de définir des en-têtes HTTP avec tous les langages principaux?

J’ai cherché sur le site Web et je n’ai pas trouvé de réponse à ma question.

Plus précisément, je veux savoir quelle commande apache ou autre serveur Web peut envoyer à l’application PHP.exe ou à l’application PHP-CGI.exe pour recevoir d’autres informations en plus du fichier HTML généré.

En effet une question intéressante. En utilisant des outils en ligne de commande, je ne peux accéder qu’à la sortie HTML produite. D’où php -r"header('Location: http://someurl.com');" ne produira rien de la ligne de commande.

Quand je regarderais ma configuration avec IIS (pas Apache), je vois qu’IIS utilise PHP-CGI.exe pour communiquer avec PHP. En regardant les arguments facultatifs de PHP-CGI.exe, je vois que -b peut être utilisé pour définir un Bind Path for external FASTCGI Server mode . Je suppose que dans ce mode serveur, il y aura de la place pour communiquer les informations d’en-tête séparément du HTML produit.

Je ne connais pas les détails exacts des protocoles FASTCGI pour aller plus en profondeur. Mais je suppose que c’est ce que vous vouliez savoir.

MODIFIER:

En cherchant à ce sujet, je suis tombé sur ce sujet: Comment PHP interagit-il avec Apache?

L’envoi d’en-têtes à partir de PHP est très utile. Vous pouvez, par exemple, envoyer des en-têtes qui obligent le navigateur à télécharger un fichier ou à afficher à l’écran

Comme indiqué dans l’un des commentaires, PHP étant un module d’Apache dans de nombreuses installations, il envoie directement des en-têtes à travers cela. Sinon, les en-têtes seraient envoyés via CGI / FastCGI ou PHP-FPM pour nginx.

Ce que vous pensez plus ou moins, c’est d’un moteur de templates, que PHP utilise bien, mais PHP a d’autres fonctions qui ne seraient normalement pas visibles dans un moteur de template, comme l’ouverture de sockets, la gestion de fichiers, etc.

Tout langage backend avec lequel j’ai eu de l’expérience prend en charge l’envoi d’en-têtes HTTP, et je considère que tout langage back-end orienté Web est incomplet sans cette capacité.

en-tête (“Emplacement: http://www.google.com/ “);

De cette façon, nous pouvons définir en-tête en php