Maison >développement back-end >Problème PHP >Comment résoudre le problème de l'échec de l'en-tête PHP
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.
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!