Problème avec session_start()

Bonjour à tous,

J’ai besoin de vos lumières.

J’ai un fichier index.php encodé en UTF-8 avec tout un contenu représentant une interface d’authentification. Il fonctionnait très bien en local mais au passage en ligne, voici le message d’erreur que j’ai eut :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.361/itsoftwa/www/index.php:1) in /homez.361/itsoftwa/www/index.php on line 2
?
Suite à cette erreur j’ai fait un test et j’ai simplifié mon fichier au strict minimum dont le code est le suivant :


<php
session_start();
?>

Aucun espace n’est indiqué dans le fichier et pourtant rien qu’avec ce petit bout de code, il me met le même message d’erreur.

Sans trop savoir pourquoi, j’ai décidé de passer mon fichier en ANSI au lieu de l’UTF-8. Comme par magie, plus de message d’erreur…

Quelqu’un a-t-il une explication sur ce problème ?

Je pourrais dire, c’est pas grave ça fonctionne… A l’exception près que le navigateur ne gère plus correctement les accents…

Dois-je mettre sans arrêt des utf8_encode() ???

Merci à tous pour vos réponses.

<php
session_start();
?>

Relis ton code ligne par ligne (en partant du bas pour le suspens):

?>

=> OK

session_start();

=> OK

<php

=> PAS OK

Rohh, ce serait un script de 800 lignes, ok, mais là quand même … x) x)

Salut!

Merci pour ta réponse mais j’avais déjà testé lol.

Mais j’ai quand même avancé dans mon problème enfin il faut le dire vite.

J’ai un fichier de configuration nommé settings.php.
Ce fichier n’appelle aucun autre fichier.

Donc après une multitude de teste, j’ai encore simplifié au maximum ce fichier et voici ce qu’il me reste :


<?php
define("HOST","xxx");
?>

et voici le message d’erreur :

Il n’y a aucun espace, ou tout autre caractère susceptible de faire bugger…
Et pourtant…

J’utilise comme éditeur Notepad++.

Notepad met-il quelque chose de pas net dans l’entête de ce fichier au niveau encodage ?

Je suis vraiment désespéré, il n’y a aucune raison que mon code ne fonctionne pas surtout que quand je passe mon fichier en encodage ANSI, ça fonctionne très bien…

Si tu as une idée…

Problème résolu !!!

Beaucoup diront que l’erreur que j’ai eut (voir premier post) est dû à un caractère envoyé dans le header avant un session_start() par exemple.

Eh bien ils ont raison à l’exception près que quand nous sommes sûr de notre code, d’où vient le problème ???

Il faut voir du côté de l’encodage des fichiers. Pour ma part j’étais en UTF8. Bon ok, utf8 pour le web c’est normal…

Mais là où il y a un problème c’est que l’UTF8 normal envoie en premier un caractère assez bizarre.
Et pour supprimer ce caractère il faut tout simplement passer en UTF8 SANS BOM (on peut y passer des heures sans s’en rendre compte).

En espérant aider d’autres personnes…

Bon dev à tous

Tiens, j’allais te proposer ça comme explication sans en être sur…

Ceci étant, PHP gère l’utf-8 jusqu’à une certaine limite (ie: il ne le gère pas la plupart des cas, c’est juste que ça passe bien).

Moi aussi évidemment x]

D’accord, en tout cas merci de m’avoir aidé :wink:

J’ai eu le même problème hier et j’allais te donner la solution. C’est un truc con quand on ne sait pas!