Reivax962
2132Messages postés
16 juin 2005Date d'inscription
11 mai 2012Dernière intervention
19 janv. 2007 à 15:21
Bonjour,
En fait, il y a de très fortes chances pour que les alertes aient déjà été présentes sous Linux, mais n'aient pas été affichées du fait des paramètres du serveur php (c'est, en effet, configurable au niveau du serveur...)
Le problème que tu décris vient de la structure du message http.
Quand le serveur web renvoie des informations au navigateur, il envoie d'abord un "header", qui contient notamment les cookies et d'autres informations sur la page elle-même.
Ensuite, le corps du message http contient le code html de la page.
Le serveur Apache envoit tout ça sans qu'on le lui demande explicitement, en général.
Toutefois, certaines fonctions Php impliquent une modification de ce header. C'est le cas de la mise en place d'un cookie, d'une session (puisqu'elles sont identifiées par un cookie), mais aussi de la fonction headers() qui permet de les modifier explicitement.
Toutefois, dans ta page php, suppose que tu aies, en haut de page, un "<html>" , ou un "echo $truc;".
Que va faire le serveur : il va voir qu'il faut envoyer ces informations au client. Seulement pour les envoyer, il faut commencer par envoyer le header de la réponse !
Donc il génère un header "par défaut", et l'envoie au client avec le début du code html demandé.
Si, ensuite, dans ta page, tu appelles méthode qui demande de modifier les headers, tu obtiens le message d'erreur que tu nous montres : "Warning: session_start(): Cannot send session cookie - headers already sent by... "
Voilà, j'espère que mes explications t'ont permises de comprendre le problème. Evidemment, la solution est donc de faire ton session_start() avant toute autre chose sur ta page, y compris avant le <html> !
Bon courage pour la suite,
Xavier