Php Warning: Cannot modify header information
Résolu
lolo3
-
norre -
norre -
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
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:
- Warning : cannot modify header information - headers already sent by
- Cannot modify header information - headers already sent b - Meilleures réponses
- Php warning: cannot modify header information - headers already sent by (output started at - Meilleures réponses
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum Bureautique
- Request header or cookie too large - Forum Webmastering
- Information d'identification réseau - Guide
- Message bounced by administrator - Forum Mail
- To be filled by o.e.m - Forum Windows
28 réponses
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
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>'; ?>
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