Les Allergies
Alimentaires
Posez votre question Signaler

Php Warning: Cannot modify header information [Résolu]

lolo3 - Dernière réponse le 22 mars 2012 à 20:19
bonjour,

j ai code php qui dans une premiere version dite en "dur" qui marche tres bien.
Le probleme pour sa reutilisation et sa maintenace plus aisee, je souhaite remplacer mes parametres en "dur" par des variables php. J ai donc proceder un la maniere c, a savoir creer un fichier de config: config.php qui donne cela:
<?
if (!isset($CONFIG) || $CONFIG!=1)
{
$CONFIG=1;
$www="xxxxxxxxx";
$database="xxxxxxx";
$dbname="xxxx";
$dblogin="xxxx";
$dbpasswd="xxx";
}
?>


dans mes pages ou je souhaite avoir connaissance a ces variables j ajoute en debut:

if (!isset($CONFIG) || $CONFIG!=1)
{
include('./../config/config.php');
}

Je fais appel a la fonction header du genre:
header("Location: $www");

Au niveau de ma base donnees tout fonctionne(ajout reussi) mais php renvoie

Warning: Cannot modify header information - headers already sent by (output started at /xxxxxxxxxx/config/config.php:26) in /xxxxxxxxxxx/log2/index.php on line 54

Y a t il un myen d eviter cela???
Merci d avance

ps: PHP Version 4.3.4
Lire la suite 

Php Warning: Cannot modify header information »

44 réponses
Réponse
+30
moins plus
Salut,

Ca signifie que du code Html a déjà été généré (ça viendrait de la 26 ème ligne de config.php ....mais il en fait beaucoup moins, c'est bizzare).
Car la fonction header doit être appelée avant la génération de la moindre mise en page.

Au pire, tu peux remplacer ta ligne avec header() par une redirection javascript
<?
echo '<script language="Javascript">
<!--
document.location.replace("$www");
// -->
</script>';
?>
yassine - 25 janv. 2012 à 21:41
je compent pas
ram - 6 févr. 2012 à 00:55
merci
xsavitch - 22 mars 2012 à 20:19
Merci bien kilian :)
Ajouter un commentaire
Réponse
+17
moins plus
Bonjour, vous devriez regarder cet article qui recense de nombreuse manières pour résoudre cette erreur :
http://blog.darklg.fr/136/php-erreur-cannot-modify-header-information/

Bien cordialement, Jean Michel.
atl2000 - 29 juin 2011 à 20:32
excellent, un fichier de session avec des lignes blanches a cassé mon code, apres nettoyage, le redirect/header ne voit plus ces lignes donc pas d'output avant lui, et ca remarche de nouveau ;-)

Merci pour ton lien
OneTwoThree - 26 nov. 2011 à 12:50
Merci pour ce lien qui m'a sauvé après 2H de recherche !
Ajouter un commentaire
Réponse
+3
moins plus
Merci chef ça marche nickel avec le java script!!!!!

ps: elle est un peu con la fonction header de php
Ajouter un commentaire
Réponse
+3
moins plus
une explication alors....
Ajouter un commentaire
Réponse
+2
moins plus
Hello, efféctivement, cette astuce marche mai ici j'ai un probleme avec cette erreur mais je ne peu pas appliquer cet soluce

l'erreur est sur ces 2 lignes
setcookie("idm");
setcookie("pseudom");


voici le code de mon fichier logout.php en entier
<?php
include"config_script.php";
setcookie("idm");
setcookie("pseudom");
$pseudom=$HTTP_COOKIE_VARS['pseudom'];
mysql_query("DELETE FROM fk_online WHERE pseudo='$pseudom'") or die (mysql_error());
echo"<br><br><center><b>Deconnexion...</b></center>";
unset($pseudom);
unset($idm);
echo"<body bgcolor='$_COULEUR_FONT'>
<script type=\"text/javascript\">function redirection_js(){ x=setTimeout(\"window.location.href='index.php'\",1500); }
</script><body onLoad=\"redirection_js();\">
";
?>

faut til que je modifie mon config_script.php?
merci les gars
marimoi - 13 juin 2010 à 22:27
merciiiii
Ajouter un commentaire
Réponse
+2
moins plus
Moi ca marche pas!!!!!!!
Ajouter un commentaire
Réponse
+2
moins plus
Bonsoir, j'ai le meme probleme apparement,


Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\wamp\www\forum\db\mysql4.php on line 318

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\wamp\www\forum\db\mysql4.php on line 318

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\forum\db\mysql4.php:318) in C:\wamp\www\forum\includes\page_header.php on line 641

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\forum\db\mysql4.php:318) in C:\wamp\www\forum\includes\page_header.php on line 647

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\forum\db\mysql4.php:318) in C:\wamp\www\forum\includes\page_header.php on line 648


je ne sais pas trop d'ou ca vient le probleme

Si vous pouviez m'aider ^^
Ajouter un commentaire
Réponse
+1
moins plus
Non elle est pas con, c'est normal. :-)
Ajouter un commentaire
Réponse
+1
moins plus
Le format d'une réposne HTTP est comme ceci:

HTTP/1.x 200 OK
Date: Mon, 24 Jan 2005 15:16:52 GMT
Content-Type: text/html

<html>
<head>...



D'abord un bloc d'entêtes, puis le corps du document lui-même.


Si tu as déjà écris des données dans le corps du document, ça veut dire que les entêtes sont déjà envoyées.
Vues qu'elles sont déjà envoyés, on ne peut plus les modifier.
Ajouter un commentaire
Réponse
+1
moins plus
ok merci, je comprends la couille maintenant
A bientot tlm
et merci de votre aide
Ajouter un commentaire
Réponse
+1
moins plus
Si après toutes ces explications, ça ne marche pas...
Regardez le format d'encodage du fichier PHP losque vous l'éditez...Il doit être en UTF8 SANS BOM...

Navajo
senga1607 - 9 août 2010 à 23:28
Bonjour, bon c'est un peu tard mais merci pour ce post, ça a marché en mettant utf8 sans bom, cordialement
Ajouter un commentaire
Réponse
+1
moins plus
Décidément je trouve ce forum fantastique, à quasiment tous mes problèmes, je trouve la solution ici.
Un grand merci à vous!
Ajouter un commentaire
Réponse
+0
moins plus
Merci à toi kilian, ton code marche très bien !
Ajouter un commentaire
Réponse
+0
moins plus
Kilian t un beau gosse ;-)
merci
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
j'ai le même bp , mais avec setcookie ("variable") ; ,avant setcookie il n'a y pas de sortie comme echo , ou n'import qu'elle balise html , enfait chez moi ça march parfaitement j'utilise le php 4.3.3 , chez l'hébérgeur ou ça pose pb il utilise 5.2.2, je ne sait pas si il un rapport de version
Ajouter un commentaire
Réponse
+0
moins plus
Salut a tous,

dans vos fichiers de config après le dernier ?> il n'y aurrai pas des espaces ou plusieurs retour chariot, qui seraient mis dans le contenu du document http ?
Ajouter un commentaire
Réponse
+0
moins plus
Pour résumer le tout:
http://www.commentcamarche.net/faq/sujet 1916 php headers already sent by
Ajouter un commentaire
Réponse
+0
moins plus
J'avais le meme soucis, mais je ne voulais pas ariver au meme résultat que vous je crois:

Je voulais que n'importe qui arrivant sur mon, soir rediriger sur la meme page mais avec un argument supplémentaire. Genre:

http://blabla.com >> http://blabla.com/index.php?action=news

Seulement voila, c'est impossible justement a cause de cette redifition d'en-tete.
Solution:
créer main.php, du coup:

http://blabla.com >> http://blabla.com/main.php?action=news

Voila juste au cas ou des personnes aurait le meme souci ;)
Ajouter un commentaire
Réponse
+0
moins plus
J'avais le même pb.
J'ai modifié les deux param puis redémarré tous les services.
C'est bon, ca marche, je n'ai plus le message d'erreur.
Alex
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,

J'a un probléme avec un retour sur page adns mon formulaire de contact php , aprés avoir rempli la page contact, le visiteur clic sur envoi et voici la page affichée:
" Warning: Cannot modify header information - headers already sent by (output started at /home/studioph/public_html/contact.php:1) in /home/studioph/public_html/contact.php on line 33 "
Je précis eque je reçois le message sur ma boite mail!!

Voici ma page php:

"<title>contact.php</title><?php
/************************************************
Renseignez correctement les Champs ci-dessous
************************************************/
/* Mettre entre les guillemets la page où l'utilisateur
doit être envoyé après avoir validé le formulaire
ex : une page de remerciement ou retour à la page
index.html */
$retour="menu.html ";
/* Indiquez entre guillemets l'email qui devra recevoir
le contenu du formulaire saisi par le visiteur
et le sujet du message e-mail qui sera envoyé */
$To = $From = "info@studiophoto1.fr";
$Subject="Formulaire saisie sur mon site.";
/************************************************
Ne rien toucher après cette ligne
************************************************/
if(eregi("\n",$To) OR eregi("\n",$From) OR eregi("\n",$Subject)){
die("Accès refusé");
}
$From2=explode("@",$From);
if ( !eregi($From2[1], $_SERVER['HTTP_HOST']) )
die("Accès refusé.");
$message="";
foreach($_POST as $key => $P){
$message.=$key." = ".$P."\r\n\r\n";
}
$headers = "From: <".$From.">\n";
$headers .= "X-Sender: <".$From.">\n";
$headers .= "X-Mailer: PHP - ".$_SERVER['HTTP_HOST']."\n"; // Origine
$headers .= "Return-Path: <".$From.">\n"; // Re-chemin de retour
mail($To, $Subject , $message, $headers);
header("Location: $retour");
?>

"

J'ai installé ce même script sous 2 autres sites et ça fonctionne, en fait j'ai 3 fois le même site avec des différents domaines.Cela ne fonctionne pas sur celui-ci...

Des suggestions?
Merci par avance.

Philippe

Une suggestion
simon - 8 oct. 2008 à 23:55
La réponse est dans ce fil, il ne faut rien envoyer avant les en-têtes (header, setcookie,...)
Ici, tu envoies le titre avant les en-tête, ça ne marche pas !
Commence ton script par <?php et supprime donc tout ce qu'il y a avant.

cdt,
Simon.
Chambre hôtes Jolivet - 9 févr. 2012 à 16:16
Je partage simplement ce qui m'a mis le plus de temsp à comprendre et qui est pourtant la clé du problème, en tous cas pour mon problème !
Si vous avez une erreur de ce genre :
headers already sent by (output started at /xxxxxxxxxx/config/config.php:26) in /xxxxxxxxxxx/log2/index.php on line 54
Il NE FAUT PAS chercher dans la ligne 54 de index.php mais plutôt dans la 26eme ligne de config.php et même plus exactement avant ou après la 26eme ligne, il peut tout simplement s'agir comme moi d'un petit espace de trop tout à la fin du code ou juste avant <?php ou juste après ?>
2 jours passes sur cette erreur pour un siomple petit espace en trop !!!
le résultat : http://www.chambreshotesjolivet.fr
Bon courage !!!
Ajouter un commentaire
Ce document intitulé « php Warning: Cannot modify header information » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Les pires photos de famille
  • Les pires photos de famille

    Mises en scène étranges, coiffures démodées ou poses incongrues... Découvrez les pires photos de famille du site américain Awkward Family.

php Warning: Cannot modify header information - page 2