Bonjour,
Je travail actuellement sur une application relativement complexe (vis a vis de mon expérience dirons-nous) et je suis confronté a une difficulté que je ne comprend pas: le warning "header already sent ..." bien classique.
Dans les situations auxquelles j'ai été confronté par le passé, il s'agissait d'un saut de ligne, espace ou encore un affichage quelconque dans les lignes précédant le header de redirection, mais cette fois, je ne trouve pas. Pour m'aider dans cette recherche, j'ai trouvé sur le net la fonction headers_sent qui permet de vérifier si le header a déjà été envoyé et de récupérer également le fichier et la ligne a laquelle la faute est commise.
Le résultat est que malgré que j'ai supprimé l'ensemble des espaces/sauts de lignes en début et en fin de fichiers (inclus et du fichier concerné) et après avoir vérifié que aucun affichage (echo et autres fonctions) ne s'etait glissé dans mon code avant le header, le warning persiste, mais n'indique pas le fichier ni la ligne, et la fonction headers_sent($f,$l) renvoie true mais $f est null et $l vaut 0.
Je suis sur un serveur WAMP (php5.2.8) et j'ai fais quelques tests: j'ai essayé dans l'ordre:
- Faire un simple header de redirection dans les règles -> OK.
- Emmètre des caractères avant le header -> redirection effectuée tout de même.
- Emmètre beaucoup de caractères avant le header -> redirection effectuée tout de même.
Les mêmes tests en utilisant la fonction headers_sent($f,$l) de la façon suivante:
Code :
- if(headers_sent($f,$l))
- {
- echo('<br />'.$f.'<br />'.$l);
- }
- else
- {
- header('Location: ./catalog/index.php');
- }
|
ont donné les mêmes résultats.
J'ai alors désactivé l'output buffering de mon php.ini
Les résultats étaient concluant a savoir:
- Faire un simple header de redirection dans les règles -> OK.
- Emmètre des caractères avant le header -> Pas de redirection. + affichage du nom du fichier et de la ligne.
- Emmètre beaucoup de caractères avant le header -> Pas de redirection. + affichage du nom du fichier et de la ligne.
Je n'ai pas réussi a reproduire l'erreur que j'ai sur mon appli a part sur l'appli en elle même (un osCommerce, c'est assez difficile a décortiquer en petits bouts :s )
Avez vous une idée de l'origine de ce problème (a savoir l'envoie de header mais impossible de savoir ou)?
Merci de votre aide.
Message édité par illeriane le 04-08-2009 à 16:46:28