Rechercher : dans
Par :

Php Warning: Cannot modify header information

Dernière réponse le 1 sep 2009 à 18:22:09 lolo3, le 24 jan 2005 à 02:39:57 
 Signaler ce message aux modérateurs

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

1

kilian, le 24 jan 2005 à 07:20:21
  • +6

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>';
?>

Répondre à kilian

8

preuss, le 18 fév 2007 à 14:35:49
  • +17

Cannot modify header information - headers already sent by ;;;;


Ce message d’erreur indique que vous tenter d’écrire des entêtes HTML, alors que le corps de la page a déjà été enrichi.
En plus clair :
Votre script php a généré par exemple
Echo ‘ bonjour,’
Et ensuite dans votre script apparaît une ligne du genre

Header (‘une entête….’)

D’une manière générale il faut éviter ce genre de chose (pour des raisons de performances) mais ce n’est pas rédhibitoire.
Premièrement, faite phpinfo() et vérifier le paramètre output_buffering, il est certainement à off
Il faut le modifier (dans php.ini) il lui attribuer une valeur 1024, 2048 ou 4096 voire on
Il faut aussi penser à redémarrer apache.

Cela veut dire, ( par exemple 4096), que vous enregistrer dans un BUFFER pour un maximum 4096 octets de code de votre page, donc qui ne sont pas encore envoyé vers la sortie standard.
Tant que votre script écrit dans le BUFFER vous pouvez rajouter des entêtes par la commande header. Ensuite le BUFFER envoi en bloc vers vote navigateur

Evidement, tout ceci n’est valable que si vous avez la maîtrise du php.ini. dans le cas des hébergements mutualisés il n’est pas possible de modifier ce paramètre…
www.actonis.fr

Répondre à preuss

25

spike911, le 25 fév 2009 à 02:27:14

Il est possible de faire un simple:

<?php
      include_once "$Nom_de_la_page";
      exit(); 
?>

_sp|ke_

Répondre à spike911

26

 Judes-Emile Bornes IV, le 1 sep 2009 à 18:22:09

Le même script avec un timer.

echo '<script language="Javascript">
<!--
var t=setTimeout("document.location.replace(\'page.html\')", 2000);
// -->
</script>';

Répondre à Judes-Emile Bornes IV

2

lolo3, le 24 jan 2005 à 15:04:00

Merci chef ça marche nickel avec le java script!!!!!

ps: elle est un peu con la fonction header de php

Répondre à lolo3

3

sebsauvage, le 24 jan 2005 à 15:49:43

Non elle est pas con, c'est normal. :-)

Répondre à sebsauvage

4

lolo3, le 24 jan 2005 à 16:17:31

Une explication alors....

Répondre à lolo3

5

sebsauvage, le 24 jan 2005 à 16:21:44
  • +1

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.

Répondre à sebsauvage

6

lolo3, le 24 jan 2005 à 16:30:57

Ok merci, je comprends la couille maintenant
A bientot tlm
et merci de votre aide

Répondre à lolo3

7

shun, le 27 jan 2005 à 14:06:16

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

Répondre à shun

9

Turka91, le 26 avr 2007 à 19:53:12

Merci à toi kilian, ton code marche très bien !

Répondre à Turka91

10

anaconda, le 3 mai 2007 à 09:25:04

Kilian t un beau gosse ;-)
merci

Répondre à anaconda

11

Bebert, le 6 jun 2007 à 14:40:14

Moi ca marche pas!!!!!!!

Répondre à Bebert

12

chrak, le 14 oct 2007 à 02:29:15

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

Répondre à chrak

13

TLa, le 14 oct 2007 à 21:33:24

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 ?

Répondre à TLa

14

Navajo, le 17 nov 2007 à 23:32:42

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

Répondre à Navajo

15

kilian, le 19 nov 2007 à 16:41:54
Répondre à kilian

16

seymour, le 30 nov 2007 à 21:28:10

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 ^^

Répondre à seymour

17

JEDLI, le 2 avr 2008 à 17:50:17

Headers already sent by.....

Pour ce problème il faut modifier le fichier php.ini
Ce fichier ce trouve dans ... ..EasyPHP1-8\conf_files\
Il faut mettre les paramètres :

---- output_buffering =4096
---- output_handler =4096

Pour l'explication de ça :: c'est facile ::

www.JedlySoft.com

Répondre à JEDLI

18

sethnico, le 16 mai 2008 à 14:32:59

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 ;)

Répondre à sethnico

19

Shena, le 17 jui 2008 à 16:28:32

Décidément je trouve ce forum fantastique, à quasiment tous mes problèmes, je trouve la solution ici.
Un grand merci à vous!

Répondre à Shena

20

Alex, le 28 aoû 2008 à 02:38:21

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

Répondre à Alex