Warning: Cannot modify header information - headers already sent by (output star [Résolu]

Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
- - Dernière réponse : cod57
Messages postés
1660
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.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
20
3
Merci
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 -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
0
Merci
Je vous ai posté les premières lignes de mon code, je n'ai aucune autre ligne avant ça.
Commenter la réponse de anthony428
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
9
0
Merci
Même pas un espace avant le <?php ?

_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
0
Merci
même pas !!!
Commenter la réponse de anthony428
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
20
0
Merci
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 -
Commenter la réponse de kohntark
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
0
Merci
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é...
Commenter la réponse de anthony428
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
29 mai 2012
0
Merci
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.
Commenter la réponse de anthony428
Messages postés
2
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
1 novembre 2010
0
Merci
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 ?
Commenter la réponse de chlbak
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
7
0
Merci
<?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() ?
Commenter la réponse de cod57