Maison > Article > développement back-end > Avertissement PHP : impossible de modifier les informations d'en-tête -Solution
Lorsque vous utilisez PHP pour écrire un site Web ou une page Web, vous pouvez parfois rencontrer ce message d'erreur : Avertissement PHP : Impossible de modifier les informations d'en-tête. Cette erreur est généralement provoquée par la tentative de modification de l'en-tête HTTP lors de la sortie de l'en-tête HTTP vers le navigateur avant d'envoyer le contenu. Ce problème peut ne pas paraître grave, mais il peut provoquer une erreur imprévisible dans votre code PHP. Cet article explique comment résoudre ce problème.
Qu'est-ce que les « informations d'en-tête » ?
Avant de comprendre ce problème, nous devons savoir ce qu'est « les informations d'en-tête ». Les « informations d'en-tête » sont des informations transmises entre le navigateur et le serveur Web. Ces informations incluent des informations sur l'encodage de la page, la langue, le délai d'expiration, le contrôle du cache, les cookies, etc. PHP vous permet de modifier ces informations à l'aide de la fonction header().
Analyse des causes
Lorsque le code PHP doit utiliser la fonction header() pour modifier l'en-tête HTTP, le moteur d'exécution de PHP exige qu'il n'y ait aucune sortie avant que l'en-tête HTTP ne soit envoyé au navigateur. En PHP, il existe de nombreuses façons d'afficher, telles que l'écho, l'impression, l'espace, le retour chariot et le saut de ligne, etc. S'il y a une sortie avant l'envoi des en-têtes HTTP, PHP générera une erreur "informations d'en-tête déjà envoyées". C'est pourquoi l'erreur PHP Avertissement : Impossible de modifier les informations d'en-tête se produit.
Solution
Il existe trois façons de résoudre ce problème :
Avant de sortir le contenu, vous devez vous assurer qu'il n'y a pas de caractères inutiles. caractères inutiles dans le code tels que les espaces, les retours chariot, les sauts de ligne, etc. En effet, ces caractères produiront également une sortie, provoquant l'existence d'une sortie avant l'envoi de l'en-tête HTTP, déclenchant ainsi l'erreur « informations d'en-tête déjà envoyées ».
La fonction ob_start() ouvre un tampon de sortie afin que toutes les sorties soient mises en cache en mémoire et que les en-têtes HTTP ne soient pas envoyés au navigateur. À la fin du code PHP, la fonction ob_end_clean() efface tous les tampons et envoie toutes les sorties au navigateur.
La méthode d'utilisation des fonctions ob_start() et ob_end_clean() est la suivante :
<?php ob_start(); //Your PHP code header('Location: http://www.example.com/'); ob_end_clean(); ?>
Dans le code ci-dessus, la fonction ob_start() ouvre un tampon, la fonction header() définit l'en-tête HTTP et la fonction ob_end_clean( ) la fonction efface la zone tampon et envoie la sortie au navigateur.
L'utilisation des fonctions ob_start() et ob_end_flush() est similaire à la façon dont vous utilisez les fonctions ob_start() et ob_end_clean(). La différence est que la fonction ob_end_flush() envoie le contenu du tampon au navigateur et ferme le tampon. Lorsque vous utilisez cette approche, vous devez vous assurer qu'il n'y a pas de sortie inutile avant de l'envoyer au navigateur.
La méthode est la suivante :
<?php ob_start(); //Your PHP code header('Location: http://www.example.com/'); ob_end_flush(); ?>
Résumé
Lorsque vous rencontrez l'erreur PHP Attention : Impossible de modifier les informations d'en-tête, pas de panique, car c'est très simple à résoudre. Assurez-vous simplement qu'il n'y a aucune sortie avant d'envoyer l'en-tête HTTP, ou utilisez les fonctions ob_start() et ob_end_clean() ou les fonctions ob_start() et ob_end_flush(). Ce message d'erreur est généralement un avertissement plutôt qu'une erreur fatale, vous n'avez donc pas besoin de paniquer. Tant que vous suivez les méthodes ci-dessus, votre code PHP fonctionnera normalement.
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!