Encore session_start()

NDS
Petit nouveau ! | 7 Messages

17 janv. 2009, 23:28

Bonjour,

Moi aussi j'ai la réponse suivante de mon serveur distant:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/ville/public_html/NDS/commerces/index.php:8) in /home/ville/public_html/NDS/commerces/index.php on line 17

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ville/public_html/NDS/commerces/index.php:8) in /home/ville/public_html/NDS/commerces/index.php on line 17
Par contre, sur mon serveu local, tout fonctionne ok.

Sur mon serveur local je n'ai pas de mot de passe pour la BD contrairement au serveur distant.

Merci des réponses

Alain

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 janv. 2009, 00:03

Ta session ne peut démarrer qu'à condition de ne rien avoir envoyé au navigateur au préalable, comme pour un header(). Donc pas de code html, pas de echo, pas de lignes vide, ...

Si ça fonctionne en local c'est probablement parce que ton serveur est configuré pour bufferiser la sortie (au lieu d'envoyer les données au navigateur au fur et à mesure, php les stock dans un buffer et ne les envoi que quand il dépasse une certaine taille)

Donc pour ne pas dépendre de la conf du serveur et éviter ce message, et si tu ne sais pas trop où y faire appel, il te suffit de mettre ton session_start() dès le début de ton script (tu peux le coller dès la première ligne pour être sur de ne rien envoyer avant) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5924 Messages

18 janv. 2009, 03:04

Mon cher Ryle dans ces cas là on dit RTFM :)
Note: Si vous utilisez des sessions basées sur les cookies, vous devez appeler session_start() avant d'afficher quoi que ce soit au navigateur.

NDS
Petit nouveau ! | 7 Messages

18 janv. 2009, 15:49

Merci Ryle!

C'est effectivement à la sortie sur mon serveur local configuré pour bufferiser la sortie qui me mélangeais.

J'avais un appel pour une feuille de style au début de ma page. J'ai donc mis session_stat() au tout début et après, j'appel ma feuille de style. Comme quoi il ne sert a rien de tenter de changer le monde!

Merci encore et désolé pour le temps de réponse car je demeure au Canada et décalage horaire oblige!

Alain