Session_start(): Cannot send session cache li
Résolu/Fermé
isabelle
-
24 juin 2007 à 17:52
menphis1 Messages postés 29 Date d'inscription lundi 19 mars 2012 Statut Membre Dernière intervention 21 septembre 2018 - 6 oct. 2015 à 21:09
menphis1 Messages postés 29 Date d'inscription lundi 19 mars 2012 Statut Membre Dernière intervention 21 septembre 2018 - 6 oct. 2015 à 21:09
A voir également:
- Cannot send session cache limiter
- [Php] problème avec la fonction session_start - Forum PHP
- A session had already been started - ignoring session_start() ✓ - Forum PHP
- Session_start(): Cannot send session cache limiter - headers al - Forum PHP
- Une session php a été créée par un appel de fonction session_start(). cela interfère avec l’api rest et les requêtes de boucle (loopback). la session devrait être fermée par session_write_close() avant d’effectuer toute requête http. - Forum Programmation
- Sous-requêtes - Forum Oracle
3 réponses
zefoots
Messages postés
146
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
11 septembre 2007
62
24 juin 2007 à 19:47
24 juin 2007 à 19:47
le "if" n'est pas une instruction destinée au navigateur donc elle ne déclenche pas l'envoi du header. Le problème n'est pas lié à ton "if"
exemple 1:
<?php
echo 'bonjour';
session_start();
?>
cet exemple déclenche une erreur car l'instruction echo 'bonjour' est destinée au navigateur donc déclenche l'envoi du header. Or les sessions sont gérées dans les headers donc dans ce cas session_start() provoque une erreur car le header a déjà été envoyé au navigateur.
exemple 2:
<?php
if ($toto == 2) {
$toto++;
}
session_start();
?>
cet exemple ne déclenche pas d'erreur car le header n'a pas encore été envoyé car rien dans ce programme n'est destiné à être affiché par le navigateur.
exemple 1:
<?php
echo 'bonjour';
session_start();
?>
cet exemple déclenche une erreur car l'instruction echo 'bonjour' est destinée au navigateur donc déclenche l'envoi du header. Or les sessions sont gérées dans les headers donc dans ce cas session_start() provoque une erreur car le header a déjà été envoyé au navigateur.
exemple 2:
<?php
if ($toto == 2) {
$toto++;
}
session_start();
?>
cet exemple ne déclenche pas d'erreur car le header n'a pas encore été envoyé car rien dans ce programme n'est destiné à être affiché par le navigateur.
zefoots
Messages postés
146
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
11 septembre 2007
62
24 juin 2007 à 18:28
24 juin 2007 à 18:28
Normalement le message d'erreur indique le nom du script php et le n° de ligne à partir de laquelle tu ne peux plus faire "session_start()" puisque le moteur php a déjà envoyé le header (le message dit "output started at [script1] in [script2] on line [line]" qui indique bien à partir de où il n'est plus possible de faire appel à session_start())
Il faut donc que tu appelles l'instruction session_start() avant que cette ligne soit exécutée.
En principe, le header (en tête de fichier) est envoyé dès que tu écris une instruction destinée à être interprétée par le navigateur (Internet Explorer, Firefox) du client ...
Par exemple, "echo '<html>';" est une instruction destinée au navigateur du client.
Euh, je suis pas bien sûr d'être clair. N'hésite pas me dire où ça coince. J'essayerai de reformuler autrement ...
Il faut donc que tu appelles l'instruction session_start() avant que cette ligne soit exécutée.
En principe, le header (en tête de fichier) est envoyé dès que tu écris une instruction destinée à être interprétée par le navigateur (Internet Explorer, Firefox) du client ...
Par exemple, "echo '<html>';" est une instruction destinée au navigateur du client.
Euh, je suis pas bien sûr d'être clair. N'hésite pas me dire où ça coince. J'essayerai de reformuler autrement ...
Yuricol
Messages postés
11
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
18 septembre 2009
18 sept. 2009 à 13:08
18 sept. 2009 à 13:08
Bonjour,
je tiens à préciser que je suis entiérement novice en php, pour cela que même avec les claires expliquations de Zefoots, je n'arrive à résoudre mon problème, je m'explique :
Je dispose d'un espace membre ou il est possible de protéger des pages, j'ai donc pris ce modéle de code qui fait partie de l'espace membre ----> page protégée.php dont voici le code :
<?php
//-------------------------------------------------||
// !!!! NE MODIFIER PAS CE FICHIER !!!! ||
//-------------------------------------------------||
//-- Fichier de configuration et fonction
require_once("../espace-membre/includes/conf.php");
require_once("../espace-membre/includes/template.php");
require_once("../espace-membre:includes/class/class.mysql.php");
require_once("../espace-membre:includes/class/class.espace.membre.php");
//-- Preparation de la class mysql
$mysql = new mysql;
$db_link = $mysql -> connexion_mysql($cheminbdd,$userbdd,$passbdd,$tablebdd);
//-- Preparation de la class espace membre
$espace_membre = new espace_membre;
$espace_membre -> parametres();
//-- Demarage des sessions
session_start();
//-- Protection de l'espace membre
$espace_membre -> protection($_SESSION['id_user']);
//--
?>
Votre contenue.
<?php
//-- Deconnexion de la base de données
$mysql -> deconnexion_mysql($db_link);
?>
j'ai donc repris exactement ce code et y est inséré mon contenu html, à l"endroit "votre contenue".
Je tiens à préciser que pour acceder à une page protégée sur mon site, il faut tout d'abord aller se loguer sur l'espace membre, etant ensuite identifié, il faut cliker sur un lien pour arriver sur une page qui elle n'est pas et n'a pas besoin d'être protéger, de cette page il faut choisir ensuite la page perso désirée qui elle comme je l'ai dit est protégée, je tiens aussi a dire que la page de l'espace membre reste ouvert, car quand on clique sur le lien une autre fenêtre s'ouvre.
voici l'erreur (le message) :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.145/####/www/#######/####.php:1) in /homez.145/####/www/#######/####.php on line 4
En espérant qu'une personne pourra m'aider à corriger ce problème, je tiens a vous remercier d'avance pour votre aide.
Cordialement Yuricol.
je tiens à préciser que je suis entiérement novice en php, pour cela que même avec les claires expliquations de Zefoots, je n'arrive à résoudre mon problème, je m'explique :
Je dispose d'un espace membre ou il est possible de protéger des pages, j'ai donc pris ce modéle de code qui fait partie de l'espace membre ----> page protégée.php dont voici le code :
<?php
//-------------------------------------------------||
// !!!! NE MODIFIER PAS CE FICHIER !!!! ||
//-------------------------------------------------||
//-- Fichier de configuration et fonction
require_once("../espace-membre/includes/conf.php");
require_once("../espace-membre/includes/template.php");
require_once("../espace-membre:includes/class/class.mysql.php");
require_once("../espace-membre:includes/class/class.espace.membre.php");
//-- Preparation de la class mysql
$mysql = new mysql;
$db_link = $mysql -> connexion_mysql($cheminbdd,$userbdd,$passbdd,$tablebdd);
//-- Preparation de la class espace membre
$espace_membre = new espace_membre;
$espace_membre -> parametres();
//-- Demarage des sessions
session_start();
//-- Protection de l'espace membre
$espace_membre -> protection($_SESSION['id_user']);
//--
?>
Votre contenue.
<?php
//-- Deconnexion de la base de données
$mysql -> deconnexion_mysql($db_link);
?>
j'ai donc repris exactement ce code et y est inséré mon contenu html, à l"endroit "votre contenue".
Je tiens à préciser que pour acceder à une page protégée sur mon site, il faut tout d'abord aller se loguer sur l'espace membre, etant ensuite identifié, il faut cliker sur un lien pour arriver sur une page qui elle n'est pas et n'a pas besoin d'être protéger, de cette page il faut choisir ensuite la page perso désirée qui elle comme je l'ai dit est protégée, je tiens aussi a dire que la page de l'espace membre reste ouvert, car quand on clique sur le lien une autre fenêtre s'ouvre.
voici l'erreur (le message) :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.145/####/www/#######/####.php:1) in /homez.145/####/www/#######/####.php on line 4
En espérant qu'une personne pourra m'aider à corriger ce problème, je tiens a vous remercier d'avance pour votre aide.
Cordialement Yuricol.
Bonjour,
Ce problème de session-start() vient de m'arriver sur une page de mon site sur laquelle je venais de faire une modif mineure.
La page commence bien par
<?php
session_start(); // Démarrer la session AVANT toute chose
et le message indique bien l'erreur en ligne 1.
En cherchant, j'ai trouvé que je venais de sauvegarder ma page dans Notepad++ avec un encodage en UTF-8 au lieu du codage ANSI, ce qui explique que la balise php n'était plus reconnue.
La page à nouveau sauvegardée en ANSI, tout est rentré dans l'ordre.
Si cette mésaventure peut vous éclairer tant mieux
Cordialement
Ce problème de session-start() vient de m'arriver sur une page de mon site sur laquelle je venais de faire une modif mineure.
La page commence bien par
<?php
session_start(); // Démarrer la session AVANT toute chose
et le message indique bien l'erreur en ligne 1.
En cherchant, j'ai trouvé que je venais de sauvegarder ma page dans Notepad++ avec un encodage en UTF-8 au lieu du codage ANSI, ce qui explique que la balise php n'était plus reconnue.
La page à nouveau sauvegardée en ANSI, tout est rentré dans l'ordre.
Si cette mésaventure peut vous éclairer tant mieux
Cordialement
Dfachim
Messages postés
16
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
24 mars 2011
24
19 mars 2011 à 00:42
19 mars 2011 à 00:42
Merci beaucoup mimidou !!! Tu viens de me sauver d'une incompréhension totale.
L'encodage avec DOM s'est faite automatiquement, je ne sais pas pourquoi.
Encore un grand merci
L'encodage avec DOM s'est faite automatiquement, je ne sais pas pourquoi.
Encore un grand merci
27 janv. 2009 à 20:30
Cela fait bien longtemps que ces posts ont étés postés! lol Mais étant donné que ça vient de me sauver pour la conception de l'intranet de l'entreprise dans laquelle je travaille!
Je tenais tout de même à laisser un "merci" à Zefoots
Golgot55
6 mai 2011 à 19:38
salut ! moi aussi, ça m'a rendu service merci Zeffots !
13 mai 2011 à 15:42
4 août 2012 à 12:02
Même problème, je me permets de dire qu'il faut absolument que le script php5 comporte sur la première ligne <?php s'il s'agit de de lancer session_start() !
Sinon message d'erreur donné plus haut !