Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de l'échec de l'en-tête PHP

Comment résoudre le problème de l'échec de l'en-tête PHP

藏色散人
藏色散人original
2021-10-20 11:12:535092parcourir

Solution à l'en-tête php invalide : 1. Annulez l'espace entre l'emplacement et le symbole : : 2. Il ne devrait y avoir aucune sortie avant d'utiliser l'en-tête ; 3. Modifiez php.ini pour ouvrir le cache et définissez "output_buffering=0" Modifié. au 409.

Comment résoudre le problème de l'échec de l'en-tête PHP

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment résoudre le problème d'échec de l'en-tête php ?

Analyse des causes et solutions en cas d'échec de l'en-tête PHP

Lorsque vous utilisez l'en-tête ("location:test.php") pour accéder à PHP, veuillez faire attention aux points suivants :

1. " Il ne doit y avoir aucun espace entre les caractères : ", sinon une erreur se produira.

2. Il ne peut y avoir aucune sortie avant d'utiliser l'en-tête, y compris aucun espace après la balise "?>" dans la page d'inclusion ! !

3. Le code PHP après l'en-tête sera également exécuté.

Suite :

Problème : saisir le contenu avant la fonction d'en-tête

De manière générale, le contenu HTML ne peut pas être généré avant la fonction d'en-tête. De même, il existe des fonctions setcookie() et session. doit être Ajouter des informations d’en-tête de message au flux de sortie. S'il y a des instructions telles que echo avant l'exécution de header(), lorsque header() est rencontré plus tard, une erreur « Avertissement : Impossible de modifier les informations d'en-tête – en-têtes déjà envoyés par… » sera signalée. C'est-à-dire qu'il ne peut y avoir de texte, de lignes vides, de retours chariot, etc. devant ces fonctions, et il est préférable d'ajouter la fonction exit() après la fonction header(). Par exemple, dans l'écriture incorrecte suivante, il y a une ligne vide entre les deux extraits de code PHP :

//Cela devrait être une ligne vide

Cause :

Lorsque le script PHP commence à s'exécuter, il peut envoyer http en même temps Les informations d'en-tête (titre) et le corps du message L'en-tête du message http (de la fonction header() ou SetCookie()) n'est pas envoyé immédiatement, il est enregistré dans une liste. modifier les informations d'en-tête, y compris les en-têtes par défaut (tels que les en-têtes Content-Type). Cependant, une fois que le script envoie une sortie sans en-tête (par exemple, en utilisant HTML ou un appel print()), PHP doit d'abord envoyer tous les en-têtes et puis terminez l'en-tête HTTP. Continuez ensuite à envoyer les données du corps. À partir de ce moment, toute tentative d'ajout ou de modification des informations d'en-tête n'est pas autorisée et l'un des messages d'erreur ci-dessus sera envoyé.

Solution :

Modifiez php.ini pour activer la mise en cache (output_buffering), remplacez output_buffering=0 par output_buffering=4096

ou utilisez les fonctions de cache ob_start(), ob_end_flush(), etc. dans le programme . Le principe est le suivant : lorsque output_buffering est activé, PHP n'envoie pas l'en-tête HTTP lorsque le script envoie la sortie. Au lieu de cela, il dirige cette sortie vers un cache à croissance dynamique (disponible uniquement dans PHP 4.0, qui dispose d'un mécanisme de sortie centralisé). Vous pouvez toujours modifier/ajouter des en-têtes, ou définir des cookies, car les en-têtes ne sont pas réellement envoyés. Lorsque tous les scripts se terminent, PHP enverra automatiquement les en-têtes HTTP au navigateur, puis enverra le contenu du tampon de sortie.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie php x86 ?Article suivant:Que signifie php x86 ?