mar 29 jan 2008

Warning: Cannot modify header information - headers already sent by ...

29 01 2008

Une erreur si récurrente que tout le monde la pose encore sur tous les forum :)

Les fonctions php telles que header(), setcookie() ou session_start() sont des fonctions qui manipulent les entêtes http d'une page. Les entêtes http sont là pour spécifier au navigateur client quel type de page il va devoir afficher.

Avant l'appel de ces fonctions il ne faut donc pas générer le moindre flux vers le client.

Que ce soit html ou bien un simple espace blanc ou saut de ligne avant la balise <?php, le serveur renverra l'erreur Warning: Cannot modify header information - headers already sent by ... (ou similaire) ne pouvant plus modifier les entêtes déjà envoyés.

Certains serveurs ne seront pas touchés si leur configuration php contient la variable output_buffering à on

Il est aussi possible de forcer la configuration grâce à une ligne dans un htaccess : PHP_FLAG output_buffering on Cela permet de faire patienter le flux (bufferisation) si une fonction devant modifier les header est appelée avant.

1 commentaire à Warning: Cannot modify header information - headers already sent by ...

07 02 2008
favatar de Eric Eric :

Pratique en effet :)