Flux rss
Collection CommentCaMarche.net

[PHP] Headers already sent by.....

Publié par kilian, dernière mise à jour le vendredi 19 décembre 2008 à 17:18:56 par Ssylvainsab
Lorsque vous utilisez une fonction PHP qui manipule les en-têtes HTTP comme par exemple:
  • header()
  • setcookie()
  • session_start()


Il est important d'utiliser ces fonctions avant d'avoir généré le moindre flux vers le client. A partir du moment où une information a été envoyée au client (en général: un début d'affichage d'une page web), celà signifie que les en-têtes HTTP ont déjà été automatiquement envoyées au client. Ce genre de flux est souvent envoyé avec les fonctions echo, print, etc.

S'il ya un espace de libre avant la première ouverture de balise php, alors cet espace pourrait être envoyé comme début de page web au client et donc des en-têtes http le précéderont automatiquement pour signifier au client de quelle type de flux il s'agit. Voici un exemple d'en-tête avec la page d'acceuil de CCM:
Server: Apache
X-Powered-By: Php/4.4.0-0.dotdeb.0
Keep-Alive: timeout=15, max=50
Connection: Keep-Alive
Transfert-Encoding: chunked
Content-type: text/html; charset=iso-8859-1


Donc il faut bien comprendre le système:
  • J'utilise echo, ou print au début de mon script. Idem, si j'ai un espace dans mon script qui n'est pas compris dans mes balises php, il sera considéré comme faisant partie de la source de la page à envoyer, et les en-têtes le précéderont. Ce qui peut provoquer une erreur du genre de celles dont on cherche la solution pendant plusieurs jours :-)
  • Le serveur envoie ces données, et les fait précéder par défaut d'en-têtes qui signifient que c'est une page html.
  • Si après celà dans mon script j'utilise une fonction qui touche aux en-têtes, elle ne pourra plus le faire car les en-têtes ont déjà été envoyées. J'obtiens donc une erreur du genre "headers already sent".

Utiliser header() après session_start()


Q: Mais comment je fais alors pour faire une redirection avec header() si j'utilise session_start() avant?

R: C'est impossible, en ce cas il faut choisir un moyen de faire une redirection, typiquement celà se fait en javascript, ou mieux: en html dans la balise meta refresh:
http://www.commentcamarche.net/faq/sujet 4640 webmaster faire une redirection
PHP headers already sent (Résolu) Bonjour, Lorsque je tente d'ouvrir une session en PHP, il m'affiche un message "Headers already sent". Pourtant je n'ai pas envoyé de headers avant, ni fait un seul echo ? Une idée ? www.commentcamarche.net/forum/affich-5161041-php-headers-already-sent
Header en php (Résolu) Bonjour, J'ai transféré mon site sur mon serveur web, voilà l'erreur qu'il m'affiche : Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at... www.commentcamarche.net/forum/affich-4364951-header-en-php
Session-start (Résolu) Bonjour, Voilà les phrases qui s'affichent sur mon site: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homez.27/neufmois/www/index.php:3) in... www.commentcamarche.net/forum/affich-8620779-session-start
Comment enlever la version de PHP : X-Powered-By: PHP/4.1.0 ?Par défaut, PHP est configure pour envoyer un en-tête HTTP appelé X-Powered-By, donnant la version de PHP utilisée. Pour supprimer cet en-tête, il suffit de modifier l'option expose_php dans le fichier php.ini de la manière suivante : expose_php... www.commentcamarche.net/faq/sujet-9256-comment-enlever-la-version-de-php-x-powered-by-php-4-1-0
Bad pool caller / HeaderSymptômes Un écran bleu d'affiche avec le message suivant : Bad Pool Caller Bad Pool Header Résolution Le message d'erreur Bad Pool Caller ou Bad Pool Header signifie que l'appel d'une application a échoué. Il est généralement suivi d'un certain... www.commentcamarche.net/faq/sujet-4674-bad-pool-caller-header
Probleme dans redirection en php (Résolu)Bonjour, svp pourquoi j'ai cette erreur quand je veux faire la redirection vers une autre page : Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\EasyPHP 2.0b1\www\tennis\mise_a_jour.php:105)... www.commentcamarche.net/forum/affich-4638117-probleme-dans-redirection-en-php
Les variables de sesions php (help) (Résolu)bonjour, j'étulise les variables de session et j'obtien ces messages : Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-8\www\site15\connexion.php:4) in c:\program... www.commentcamarche.net/forum/affich-3160184-les-variables-de-sesions-php-help
Pb requete sql (Résolu)Bonjour, voila je fait un formulaire d'inscription et tt fonctionne sauf que kan je fait une inscription il me met cette erreur Warning: Cannot modify header information - headers already sent by (output started at... www.commentcamarche.net/forum/affich-5539484-pb-requete-sql
Télécharger Child SentryChild Sentry est un gestionnaire de fiche d'enfant. L'application gère un nombre illimité d'enfants et permet d'insérer plusieurs photos, les contacts pour les parents ou les tuteurs et des informations supplémentaires. Vous pouvez imprimer les... www.commentcamarche.net/telecharger/telecharger-34057802-child-sentry
Télécharger Invoice by ClickInvoice by Click est un logiciel de comptabilité. L'application vous permettra de créer vos factures ou reçus et de les imprimer ou les envoyer par mail automatiquement. L'utilisateur aura le privilège d'insérer son logo et de personnaliser les... www.commentcamarche.net/telecharger/telecharger-34057477-invoice-by-click
Télécharger ByrnAvec l'arrivée de Windows Xp et Vista, Windows a amélioré l'image de leurs icônes. Mais si cela ne vous suffit plus ou si vous voulez tout simplement vous démarquer des autres, adoptez d'autres gammes d'icônes. Byrn est une série d'icônes pour vos... www.commentcamarche.net/telecharger/telecharger-34056436-byrn
Amacom AMA-BYDVD2-U SlimLine CD/DVD-ROM / USB 2.0BYDVD 2, DVD-RAM:No, Type de media lisibles:CD/DVD, Interface:USB2.0, Type de média inscriptibles:Aucun, Interne / Externe:Externe, Cache:2 Mo, Vitesse de lecture des CD ROM:32 x, Vitesse de gravure des CD-R:0 x, Vitesse de gravure des CD-RW :0 x, Temps.. www.commentcamarche.net/guide-achat/amacom-ama-bydvd2-u-slimline-cd-dvd-rom-usb-2-0-690100-fiche-technique