Cannot add header information - headers already sent by (output started at [script1]) in [script2] on line [line]

Traduction

Impossible d'ajouter des informations à l'en-tête - l'en-tête a déja été envoyé (la sortie à débuté par le script [script1]). Erreur détectée dans [script2] à la ligne [line].

Explication

Lorsqu'un navigateur demande un document à un serveur WEB, celui-ci reçoit deux informations: Une description du document, dans ce que l'on appelle l'en-tête HTTP puis le corps du document proprement dit. Juste avant d'émettre les premières lignes du document, l'en-tête est envoyé au navigateur et il n'est alors plus possible d'ajouter d'informations à l'en-tête sinon une erreur est levée.

En pratique

Vous êtes dans l'un des cas de figure suivants:
Cas d'erreur Dans le code (y compris celui dans les fichiers inclus) qui précède l'appel à un fonction du type header() vous avez "affiché" du texte. Cela peut être parce que vous avez fait appel à une fonction echo(), print(), etc. ou toute autre fonction de ce genre dans un bloc <?php ... ?> ou bien parce que vous avez inséré du texte et/ou des balises HTML en dehors des blocs <?php ... ?> avant l'appel à la fonction de type header().
Solution
Supprimer tout ce qui est susceptible "d'afficher" du texte avant l'appel à la fonction de type header(). Il suffit bien souvent de simplement réorganiser le code pour avoir (comme il se doit) l'essentiel de ce qui concerne le traitement des données en début de script et tout ce qui concerne l'affichage en fin de script.
Cas d'erreur Sans que vous ne vous en rendiez vraiment compte, vous avez des espaces (ou autre caractère invisible comme une tabulation, un retour chariot ou même encore un BOM - Byte Order Mark) avant votre appel à la fonction de type header(). Cela peut être parce que vous avez laissé des espaces ou lignes vides avant un bloc <?php ... ?> ou bien parce que vous avez laissé des espaces ou lignes vides après un bloc <?php ... ?> d'un script inclus avant l'appel à la fonction de type header() ou encore que vous avez sauvegardé votre fichier en UTF-8 sous notepad, ou en "UTF-8 with BOM" sous scite par exemple.
Solution
Supprimer tous ces caractères "invisibles" parasites. Les règles de codage du Zend Framework invitent même à ne pas mettre le marqueur de fin de bloc php (?>) à la fin du script.
Cas d'erreur Vous avez laissé apparaître un message d'erreur avant votre appel à une fonction du type header().
Solution
Corriger le problème ayant entrainé l'affichage du message d'erreur avant le code modifiant l'en-tête ou masquez le en faisant précéder l'instruction incriminée par un @ (voire en modifiant la configuration issue du fichier php.ini).
Ici vous pouvez apprendre :