Warning: Cannot modify header information – headers already sent
Si vous avez rencontré l’erreur PHP « Cannot modify header information – headers already sent », cela signifie qu’il y a un problème avec le code d’en-tête de la page de votre site Web. Ne vous inquiétez pas, nous sommes là pour vous aider! Dans cet article, nous allons voir d’où vient l’erreur et la solution correspondant.
Cas 1 : Utilisation de « echo » avant l’en-tête
<?php echo "Welcome to WayToLearnX"; ... header('Location: https://waytolearnx.com/'); ?>
Solution:
Supprimer « echo » avant l’en-tête
Utilisez ob_start();
et ob_end_flush();
.
Exemple:
<?php ob_start(); // code PHP ob_end_flush(); ?>
Cas 2 : Saut de ligne ou espaces avant <?php
Les sauts de ligne et les espaces seuls peuvent être un problème. Mais il y a aussi des séquences de caractères « invisibles » qui peuvent provoquer cela.
<?php ... header('Location: https://waytolearnx.com/'); ?>
Solution:
Supprimer toute chose avant <?php
Cas 3 : BOM(Byte-Order-Mark) dans les fichiers PHP encodés en utf-8
Si vous avez édité le fichier PHP avec un éditeur de texte comme notepad et que vous l’avez enregistré, vous pouvez obtenir le message d’erreur ci-dessus. La raison est que utf-8 BOM (Byte-Order-Mark) ajoutée par certains éditeurs de texte, comme par exemple notepad. Le script PHP ne doit pas avoir le « BOM », car le « BOM » contient des caractères, qui sont envoyés avant la fonction d’en-tête.
<?php ... header('Location: https://waytolearnx.com/'); ?>
Solution:
Changez l’encodage du fichier en « sans BOM » (par exemple en utilisant notepad++).
Ou supprimez le à l’aide d’un éditeur HEX.
Cas 4 : Header Location se trouve dans un fichier mixte PHP/HTML
<html> ... <body> ... <?php header('Location: https://waytolearnx.com/'); > ... </body> </html>
Dans ce cas, vous ne pouvez pas utiliser Header Location ici, car l’en-tête et le code HTML ont déjà été envoyés!
Cas 5 : Lignes, caractères ou espaces vides après ?> Lors de l’utilisation du « include »
<?php echo "Welcome to WayToLearnX"; ?> ...
Solution:
Supprimer toute chose après ?> Dans le fichier php inclus.
bonjour
pour ceux cas la
Cas 4 : Header Location se trouve dans un fichier mixte PHP/HTML
…
…
…
Dans ce cas, vous ne pouvez pas utiliser Header Location ici, car l’en-tête et le code HTML ont déjà été envoyés!
On peut utiliser quel solution
merci
Essayez de séparer le Header et importer le via « include » ou « require ».
Merci beaucoup