Tous webmasters débutants a rencontré dans sa vie de programmeur PHP, l'erreur Headers already sent by …
. Ce genre d'erreur est courant, voici quelques conseils pour les éviter.
Cette erreur ce produit lorsqu'une fonction PHP qui manipule les en-têtes HTTP est envoyé au navigateur du client après le début de l'envoi du contenu de la page HTML.
Toutes les fonctions manipulant les en-têtes HTTP sont susceptibles de provoquer ce type d'erreur. Les plus courantes sont :
Les erreurs Headers already sent by … sont donc provoquées par l'envoi du flux destiné a l'affichage de la page web du visiteur par le serveur. Les commandes print, echo, … sont les premiers incriminées, elles doivent être utilisées après les commandes manipulant les en-têtes HTTP. Ensuite une erreur courante et qui passe souvent inaperçue est l'affichage d'espace.
L'exemple ci-dessous va générer une erreur Headers already sent by … , je précise que le code est sans erreur et a première vue la commande echo et après la commande session_start().
Code du fichier index.php :
<?php include ('constante.php'); session_start(); $_SESSION['affiche'] = BONJOUR; echo $_SESSION['affiche']; ?>
Et le code du fichier constante.php :
<?php define ('BONJOUR', 'Bonjour, nous vous souhaitons une bonne journée'); ?>
Le premier script va mettre en session le contenu de la constante BONJOUR puis va l'afficher à l'écran. Pour connaitre le contenu de la constante BONJOUR, le script va aller lire le contenu du script constante.php.
L'erreur Headers already sent by … est provoquée par l'espace se situant après le ?> dans le fichier constante.php. Donc assurez vous toujours qu'il n'y a pas d'espace après le ?> a la fin de vos fichiers ou le mieux est de supprimer tous les ?> en fin de fichier.
Autres liens rapides pouvant vous intéresser