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

anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 28 août 2009 à 11:34 - Dernière réponse : cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention
- 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 

9 réponses

Répondre au sujet
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 28 août 2009 à 16:25
+3
Utile
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 -
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de kohntark
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 28 août 2009 à 11:37
0
Utile
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
Tonio_35 567 Messages postés mercredi 4 octobre 2006Date d'inscription 30 août 2011 Dernière intervention - 28 août 2009 à 13:14
0
Utile
Même pas un espace avant le <?php ?

_________________________________
Min iPomme
Commenter la réponse de Tonio_35
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 28 août 2009 à 14:08
0
Utile
même pas !!!
Commenter la réponse de anthony428
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 28 août 2009 à 14:39
0
Utile
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 28 août 2009 à 15:42
0
Utile
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 28 août 2009 à 17:39
0
Utile
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
chlbak 2 Messages postés lundi 19 mars 2007Date d'inscription 1 novembre 2010 Dernière intervention - 1 nov. 2010 à 08:56
0
Utile
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
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 1 nov. 2010 à 11:28
0
Utile
<?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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.