« Cannot modify header information - headers already sent » sur WordPress

Fiche du décodeur d'erreurs, mise à jour le 12 octobre 2026

GênantErreurs PHP
Le message affiché
Warning: Cannot modify header information - headers already sent by (output started at /home/monsite/public_html/wp-config.php:1) in /home/monsite/public_html/wp-includes/pluggable.php on line 1450
Autres formulations du même message 3
  • PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/themes/theme-enfant/functions.php:57) in /var/www/html/wp-login.php on line 516
  • Warning: session_start(): Session cannot be started after headers have already been sent
  • Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/monsite/www/wp-content/plugins/une-extension/une-extension.php:3)

Avant une page, le serveur envoie des en-têtes : redirection, cookies de connexion, type de contenu. PHP ne peut plus les modifier dès qu’un seul caractère de la page est parti. Ici, quelque chose a été affiché trop tôt : un espace, une ligne vide, un caractère invisible ou un avertissement. Conséquences fréquentes : connexion qui boucle, redirections qui échouent, page blanche après un enregistrement.

Pourquoi cette erreur apparaît

  • Un espace ou une ligne vide avant la balise <?php, ou après la balise ?> de fin, dans wp-config.php ou functions.php.
  • Un caractère invisible (BOM) ajouté au début du fichier par un éditeur de texte au moment de l’enregistrement.
  • Un avertissement PHP (Warning, Notice, Deprecated) affiché à l’écran parce que l’affichage des erreurs est actif, souvent après un changement de version de PHP.
  • Une extension ou un code personnalisé qui écrit du texte (echo, print) avant que WordPress ait envoyé ses en-têtes.

Comment corriger le problème

Trouver le vrai coupable

Ignorez le fichier cité tout à la fin (pluggable.php, wp-login.php) : il a seulement constaté le problème. Le responsable est entre parenthèses, après « output started at », suivi d’un numéro de ligne. Par exemple, wp-config.php:1 désigne la première ligne de wp-config.php.

Nettoyer le début et la fin du fichier

Téléchargez une copie du fichier, puis ouvrez-le avec un éditeur de code. Effacez tout ce qui précède <?php sur la première ligne. À la fin, retirez les lignes vides placées après ?> ; vous pouvez même ôter cette balise de fin, facultative dans un fichier qui ne contient que du PHP. Renvoyez ensuite le fichier par FTP.

Enregistrer sans BOM

Si la ligne indiquée est la première et paraît propre, un caractère invisible appelé BOM est probablement en cause. Dans Notepad++ ou VS Code, choisissez l’encodage UTF-8 sans BOM (les mentions UTF-8-BOM ou UTF-8 with BOM désignent la version à éviter), enregistrez, puis renvoyez le fichier.

Ne plus afficher les avertissements

Si la ligne pointe vers un fichier qui affiche un Warning ou un Deprecated, c’est cet avertissement qui part trop tôt. Sur un site en ligne, les erreurs ne doivent pas s’afficher : ajoutez ces lignes dans wp-config.php (ou modifiez la ligne WP_DEBUG_DISPLAY si elle existe), puis mettez à jour l’extension qui produit l’avertissement.

define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', '0' );

Repérer un affichage prématuré

Si le fichier en cause est une extension ou votre propre code et qu’il écrit du texte dès son chargement (echo, print, HTML hors de toute fonction), cet affichage doit passer par un hook adapté, comme wp_head, wp_footer ou un shortcode, et non au moment où le fichier est inclus.

Gardez une copie de chaque fichier avant de le retoucher, et travaillez avec un éditeur de code plutôt qu’un traitement de texte, qui ajouterait des caractères invisibles.

Le guide completComment voir les erreurs d’un site WordPress

Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.

Ouvrir le décodeur