php et erreur : PHP Warning: Cannot modify header informatio…

Page principale

Répondre à ce message
Auteur: anne.guilde@free.fr
Date:  
À: ML Guilde
Sujet: php et erreur : PHP Warning: Cannot modify header information - headers already sent by...
bonjour,

Je veux utiliser dans mon php
header("Content-type: text/plain");
header('Content-Disposition: attachment; filename="'.$filename_vcf.'"');

La fenêtre 'ouvrir avec ou enregistrer sous' ne s'affiche pas et dans
les logs j'ai

Jan 18 15:11:52 tux httpd: PHP Warning: Cannot modify header
information - headers already sent by (output started at
/home/...convert-csv1/html/index.php:16) in
/home/...convert-csv1/html/index.php on line 493
Jan 18 15:11:52 tux httpd: PHP Warning: Cannot modify header
information - headers already sent by (output started at
/home/...convert-csv1/html/index.php:16) in
/home/...convert-csv1/html/index.php on line 494

ligne 16
<?php
ligne 493
header("Content-type: text/plain");
ligne 494
header('Content-Disposition: attachment; filename="'.$filename_vcf.'"');

Le début du fichier php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="convert csv2vcf"/>
<meta name="keywords" content="csv2vcf"/>
<title>convert csv2vcf</title>
<!-- external styles -->
<link href="css/style.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<div class="boxShadows" id="headline">
<h1>csv2vcf: convert *.csv to *.vcf</h1>
<?php

J'ai trouvé sur le net sur
https://php.developpez.com/faq/?page=correction_erreurs
----
Le message d'erreur :

Sélectionnez

Warning: Cannot modify header information - headers already sent by <br/>
(output started at fichierEnvoi.php:37) in script.php on line 16

Traduction : Vous avez tenté d'envoyer des en-têtes à la ligne 16 du
fichier script.php. Hors ceux-ci ont déjà été envoyés par le fichier
fichierEnvoi.php à la ligne 37

Quand vous affichez quelque chose, PHP envoie automatiquement les
en-têtes HTTP qui contiennent, par exemple, le type de document envoyé
(PHP indique le type "text/html" si rien n'est indiqué de particulier).
Dans certain cas, votre code a besoin d'envoyer des en-têtes
personnalisés. Par exemple pour envoyer un document du type image ou
pour faire une redirection (Comment faire une redirection ?). Pour cela,
il ne faut pas que les en-têtes soient déjà envoyés sinon vous ne pouvez
pas les modifier et vous recevrez le messages d'erreur "headers already
sent ...".

En reprenant l'exemple du message d'erreur précédant, et pour résoudre
le problème, il faut modifier le fichier fichierEnvoi.php à la ligne 37
pour déplacer ce qui produit l'envoi des en-têtes.

Voici une liste (non exhaustive) de ce qui cause l'envoi des en-têtes :

     un "echo"
     un affichage hors PHP (c'est à dire de l'HTML en dehors du code)
     un ou plusieurs retours chariots avant la balise "<?php"
     une fonction qui rencontre une erreur et affiche un message (par 
exemple l'utilisation de la fonction "mysql_connect" avec de mauvais 
paramètres)


Tout ceci ne doit pas être fait avant l'utilisation de fonctions qui
modifient les en-têtes comme "header" ou "session_start" entre autres.
----

Avez-vous rencontré ce genre de problème?

Merci pour vos lumières
Anne