Php Warning: Cannot modify header information

Résolu/Fermé
lolo3 - 24 janv. 2005 à 02:39
 norre - 5 mai 2020 à 00:05
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
A voir également:

28 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
24 janv. 2005 à 07:20
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>';
?>
61
preuss Messages postés 12 Date d'inscription jeudi 29 mars 2001 Statut Membre Dernière intervention 12 juin 2008 1
18 févr. 2007 à 14:35
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
0
spike911 Messages postés 116 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 21 janvier 2020 10
25 févr. 2009 à 02:27
Il est possible de faire un simple:
<?php
      include_once "$Nom_de_la_page";
      exit(); 
?>

0