Headers already sent - Ecnodage UTF-8 ?
Résolu
MHH225
Messages postés
529
Date d'inscription
Statut
Membre
Dernière intervention
-
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
Salut !
J'ai un gros problème depuis que j'ai changé l'encodage de mes pages PHP : je codais en ANSI jusqu'à ce qu'une fausse manipulation ne me contraigne à convertir toute mes pages en UTF-8. Depuis, lorsque j'ouvre mon site, le navigateur me dit :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at [...]/index.php:1) in [...]/includes/config.php on line 183
Mes pages se configurent ainsi :
<?php
include('configuration.php'); //Qui contient de nombreuses configurations ainsi que la connexion à la bdd et session_start()
include('haut.php'); //Qui contient l'en-tête, le menu, ...
?>
<div id="corps">
<!--corps de la page-->
<?php
include('bas.php');
?>
La ligne 1 est donc "<?php"
Donc si vous avez une idée, merci d'avance ;)
J'ai un gros problème depuis que j'ai changé l'encodage de mes pages PHP : je codais en ANSI jusqu'à ce qu'une fausse manipulation ne me contraigne à convertir toute mes pages en UTF-8. Depuis, lorsque j'ouvre mon site, le navigateur me dit :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at [...]/index.php:1) in [...]/includes/config.php on line 183
Mes pages se configurent ainsi :
<?php
include('configuration.php'); //Qui contient de nombreuses configurations ainsi que la connexion à la bdd et session_start()
include('haut.php'); //Qui contient l'en-tête, le menu, ...
?>
<div id="corps">
<!--corps de la page-->
<?php
include('bas.php');
?>
La ligne 1 est donc "<?php"
Donc si vous avez une idée, merci d'avance ;)
A voir également:
- Headers already sent - Ecnodage UTF-8 ?
- Clé windows 8 - Guide
- Mixcraft 8 - Télécharger - Création musicale
- Internet explorer 8 - Télécharger - Navigateurs
- Windows 8 pro - Télécharger - Systèmes d'exploitation
- Google sketchup 8 - Télécharger - 3D
9 réponses
Il y a sans doute un caractère unicode, invisible mais bien présent.
Essayes en plaçant ton curseur après "<", appuyes sur la flèche "gauche", puis appuyes quelques fois sur la touche "Supprimer"
Essayes en plaçant ton curseur après "<", appuyes sur la flèche "gauche", puis appuyes quelques fois sur la touche "Supprimer"
bonjour,
si tu fais des header("encoding ....") ce dois être la première fonction appelé par ton php, c'est peut-être simplement l'ordre de tes appels qu'il faut changer.
si tu fais des header("encoding ....") ce dois être la première fonction appelé par ton php, c'est peut-être simplement l'ordre de tes appels qu'il faut changer.
Salut totofrancois. Je ne vois pas très bien ce que tu veux dire par header php... Je ne fait simplement que les headers classique en HTML, entre les balises <head>.
Par contre, @avion-f16, merci de ton idée ! Je n'ai pas réussi à supprimer quoi que ce soit d'invisible dans mes pages, mais en changeant le type d'affichage sur mon navigateur (qui affiche donc du ANSI au lieu du UTF-8) j'ai découvert qu'effectivement il y avait des caractères avant le message d'erreur (  pour être précis ;) ) ! Après le problème est de les enlever...
Je vais faire des tests en réecrivant une petite page, voir si le problème est lié à la conversion ou, si c'est un autre problème. Je vous tiens informé ;)
Par contre, @avion-f16, merci de ton idée ! Je n'ai pas réussi à supprimer quoi que ce soit d'invisible dans mes pages, mais en changeant le type d'affichage sur mon navigateur (qui affiche donc du ANSI au lieu du UTF-8) j'ai découvert qu'effectivement il y avait des caractères avant le message d'erreur (  pour être précis ;) ) ! Après le problème est de les enlever...
Je vais faire des tests en réecrivant une petite page, voir si le problème est lié à la conversion ou, si c'est un autre problème. Je vous tiens informé ;)
Bon donc le problème persiste même avec une page fraichement crée en UTF-8. Evidemment, avec une page en ANSI, aucun problème. Un détail que je n'avait pas pensé à vérifier, c'est que lorsque je teste en local, il n'y a aucun problème... Donc je vais jeter un petit coup d'oeil sur le site de Free, voir s'il y a quelque chose que je puisse régler. [EDIT] Comme je m'y attendais, rien à esperer de ce côté là...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Donc pour résumer, mon navigateur, ou je ne sais quoi, interprétait la balise BOM comme un caractère, et envoyait donc des informations à la page (d'où le message 'Headers already sent'). Pour enlever cette balise BOM (inutile en UTF-8) il faut la supprimer au moyen de son éditeur de texte (sur Notepad++ : "Format" -> "Convertir en UTF-8 (sans BOM)")
Merci à tous les deux !
PS :Quelques infos sur les BOM
Merci à tous les deux !
PS :Quelques infos sur les BOM
C'est le serveur.
Avant d'envoyer ta page, le serveur envoyer les entêtes HTTP au navigateur. Ces entêtes contiennent plusieurs informations. Elles sont envoyées avant le premier caractères. Ici, le caractère BOM pose problème car le serveur doit l'envoyer au navigateur, donc il envoie les entête avant. Et après, dans ton script PHP, tu demandes à modifier les entêtes, ce qui est impossible une fois qu'elles sont envoyées.
Avant d'envoyer ta page, le serveur envoyer les entêtes HTTP au navigateur. Ces entêtes contiennent plusieurs informations. Elles sont envoyées avant le premier caractères. Ici, le caractère BOM pose problème car le serveur doit l'envoyer au navigateur, donc il envoie les entête avant. Et après, dans ton script PHP, tu demandes à modifier les entêtes, ce qui est impossible une fois qu'elles sont envoyées.