Warning: Cannot modify header information - headers already sent by (output star

Résolu
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012 - 28 août 2009 à 11:34
cod57 Messages postés 1654 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 - 1 nov. 2010 à 11:28
Bonjour,

Je viens vers vous j'avais une application qui fonctionnait très bien sur mon serveur puis aujourd'hui j'ai ce message d'erreur :
Warning: Cannot modify header information - headers already sent by (output started at

J'ai vu que ce genre de message pouvez être du à l'envoi de code html avant d'appeler la fonction header.
J'ai vérifié tout mon script et je ne trouve aucun espace ni code html avant l'appel.
Je ne comprend pas.
Voici mon morceau de code.
Si vous comprenez pourquoi cela se produit et pourquoi maintenant alors que cela fonctionnait avant, je suis preneur.

<?php
header('Refresh:1;url=../index.php'); 
function forcerTelechargement($nom, $situation, $poids){
header('Content-Type: application/octet-stream');
header('Content-Length: '. $poids);
header('Content-disposition: attachment; filename='. $nom);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($situation);
exit();
}


Merci d'avance.

9 réponses

kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
28 août 2009 à 16:25
Heu ...
et de spécifier clairement (par sur lignage ou autre) la ligne en question.

Je ne vois pas la ligne en question (la 47 du fichier export_requete.php)

Par contre, tu as l'air de dire que c'est ma fonction qui retourne un mauvais résultat pourtant, cette application fonctionnait auparavant...?

Sorry, j'avais lu trop rapidement lors de mon dernier post (faut indenter !! ), mais la réponse reste la même :
Tu as une fonction qui envoie des headers au navigateur.
Le problème est que cette fonction est appelée ailleurs dans ton code (plus bas) et donc qu'il y a sans doute du code qui est envoyé au client entre temps.
De plus le header(refresh) envoie déjà un header.
Ce qu'il faut donc voir c'est le code entre ce que tu as fourni et l'appel de ta fonction, et plus particulièrement la ligne 47.

Le fait que ça ne fonctionne plus peut venir de plusieurs choses, par exemple d'un changement au niveau de ton hébergeur (une migration php, SGDB, une nouvelle restriction ou que sais je encore ...)



Cordialement,



Kohntark -
3
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
28 août 2009 à 11:37
Je vous ai posté les premières lignes de mon code, je n'ai aucune autre ligne avant ça.
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
28 août 2009 à 13:14
Même pas un espace avant le <?php ?

_________________________________
Min iPomme
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
28 août 2009 à 14:08
même pas !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
28 août 2009 à 14:39
Salut,

grrr ... j'en ai marre de voir des "erreur à la ligne ..." où l'auteur du post ne précise pas à quelle ligne l'erreur survient (mais c'est pas grave )

Alors merci d'indiquer systématiquement le message d'erreur complet et de spécifier clairement (par sur lignage ou autre) la ligne en question.

De façon générale PHP livre des messages d'erreur ou des exceptions très pertinentes.
En l'occurrence : "output started at ..." t'indique où le flux a débuter (== la ligne qui a générée l'envoi de données vers le client). A vu de nez ça ne peut être que ta fonction forcerTelechargement qui retourne qqchose (une erreur peut être ?)


Cordialement,


Kohntark -
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
28 août 2009 à 15:42
Voici les messages d'erreurs exacts :
Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/test/mta/adminv2/exporter/export_requete.php:47) in /htdocs/public/test/mta/adminv2/exporter/export_requete.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/test/mta/adminv2/exporter/export_requete.php:47) in /htdocs/public/test/mta/adminv2/exporter/export_requete.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/test/mta/adminv2/exporter/export_requete.php:47) in /htdocs/public/test/mta/adminv2/exporter/export_requete.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/test/mta/adminv2/exporter/export_requete.php:47) in /htdocs/public/test/mta/adminv2/exporter/export_requete.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/test/mta/adminv2/exporter/export_requete.php:47) in /htdocs/public/test/mta/adminv2/exporter/export_requete.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/test/mta/adminv2/exporter/export_requete.php:47) in /htdocs/public/test/mta/adminv2/exporter/export_requete.php on line 10


Par contre, tu as l'air de dire que c'est ma fonction qui retourne un mauvais résultat pourtant, cette application fonctionnait auparavant...?
Je ne comprend pas bien.
Hier, je n'ai pas pu me connecter au serveur alors je me dis qu'il y a peut être eu une mise à jour à l'origine de cette erreur, est ce possible ?
Sinon, je ne vois pas comment corriger ce code pour qu'il soit plus adapté...
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
28 août 2009 à 17:39
Merci pour ton aide, j'ai trouvé ce qui n'allait pas.
J'ai enlevé tous les espaces du fichier et non pas ceux qui étaient au début.
Je l'ai compris quand tu as dis que la fonction était appelé plus bas dans le fichier. Je pense que le problème devait venir de là.
Merci encore.
0
chlbak Messages postés 2 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 1 novembre 2010
1 nov. 2010 à 08:56
je viens d'avoir le même problème : Warning: Cannot modify header information - headers already sent by
personne peut m'aider au niveau de la configuration du serveur ?
0
cod57 Messages postés 1654 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 20
1 nov. 2010 à 11:28
<?php
ob_start(); //mettre tout ce qui sort dans un buffer


ton script en entier se trouve ici au milieu


ob_end_flush(); //vider le buffer ici
?>

apres ton header('ExpireS: 0') tu fais readfile() ?
0