sur le serveur sur lequel vous exécutez l'application php, pour un chemin spécifique, vous devez vérifier avec phpinfo ()
densityx
Réponses:
168
L'emplacement du $_SESSIONstockage variable est déterminé par la session.save_pathconfiguration de PHP . Il s'agit généralement /tmpd'un système Linux / Unix. Utilisez la phpinfo()fonction pour afficher vos paramètres particuliers si ce n'est pas sûr à 100% en créant un fichier avec ce contenu dans le DocumentRootde votre domaine:
<?php
phpinfo();?>
Voici le lien vers la documentation PHP sur ce paramètre de configuration:
Comme mentionné déjà, le contenu est stocké sur le serveur. Cependant, la session est identifiée par un identifiant de session, qui est stocké chez le client et envoyé avec chaque requête. Habituellement, l'identifiant de session est stocké dans un cookie, mais il peut également être ajouté aux URL. (C'est le PHPSESSIDparamètre de requête que vous voyez parfois)
+1 parce que vous avez laissé entendre que les cookies ne stockent pas le contenu de $ _SESSION (ces contenus sont stockés sur le serveur, donc ne sont pas vulnérables à la modification par le client)
shufler
12
Excellente réponse! Je cherchais la question: "Pourquoi les sessions expirent-elles après la suppression du cache du navigateur?". Et tu as sauvé ma journée.
Élève du
2
serveur créer le fichier sess_7nu9p0fvidvva6ouaugqcc8292 et sur l'alerte du navigateur (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb
2
Plus1 - Pour répondre à la question: "... stocké sur le client ou le serveur?"
Alex Vargas
22
Ils sont généralement stockés sur le serveur. L'endroit où ils sont stockés dépend de vous en tant que développeur. Vous pouvez utiliser la session.save_handlervariable de configuration et le session_set_save_handlerpour contrôler la manière dont les sessions sont enregistrées sur le serveur. La méthode d'enregistrement par défaut consiste à enregistrer les sessions dans des fichiers. L'endroit où ils sont enregistrés est contrôlé par la session.save_pathvariable.
Un ajout: il convient de noter que, dans le cas où "/ tmp" est le répertoire où les données de session sont stockées (qui semble être la valeur par défaut), les sessions ne persisteront pas après le redémarrage de ce serveur Web, comme "/ tmp "est souvent purgé lors du redémarrage. Le concept de persistance du côté client tient et tombe avec la persistance du stockage sur le serveur - qui peut échouer si le répertoire "/ tmp" est utilisé pour les données de session.
Sur Debian (n'est-ce pas le cas pour la plupart des distributions Linux?), Il est enregistré dans / var / lib / php5 /. Comme mentionné ci-dessus, il est configuré dans votre php.ini.
Merci, c'est tout ce que je voulais. Ouais, s'ils n'étaient pas à l'endroit habituel, je devrais ouvrir les INI, mais je voulais juste savoir "Hé, où sont généralement stockées les sessions ?" / var / lib / php / sessions / c'est le cas.
Eric L.
7
Comme M. Taylor l'a souligné, cela est généralement défini dans php.ini. Ils sont généralement stockés sous forme de fichiers dans un répertoire spécifique.
La plupart des sessions définissent une clé utilisateur (appelée sessionid) sur l'ordinateur de l'utilisateur qui ressemble à ceci: 765487cf34ert8dede5a562e4f3a7e12. Ensuite, lorsqu'une session est ouverte sur une autre page, il scanne l'ordinateur pour une clé utilisateur et s'exécute sur le serveur pour obtenir vos variables.
Si vous effacez par erreur le cache, votre clé utilisateur sera également effacée. Vous ne pourrez plus récupérer vos variables du serveur car vous ne connaissez pas votre identifiant.
Bon nombre des réponses ci-dessus sont opaques. À mon avis, l'auteur de cette question veut simplement savoir où les variables de session sont stockées par défaut. Selon ceci: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions ils sont simplement stockés sur le serveur par défaut . J'espère que d'autres trouveront cette contribution significative.
Réponses:
L'emplacement du
$_SESSION
stockage variable est déterminé par lasession.save_path
configuration de PHP . Il s'agit généralement/tmp
d'un système Linux / Unix. Utilisez laphpinfo()
fonction pour afficher vos paramètres particuliers si ce n'est pas sûr à 100% en créant un fichier avec ce contenu dans leDocumentRoot
de votre domaine:Voici le lien vers la documentation PHP sur ce paramètre de configuration:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
la source
Comme mentionné déjà, le contenu est stocké sur le serveur. Cependant, la session est identifiée par un identifiant de session, qui est stocké chez le client et envoyé avec chaque requête. Habituellement, l'identifiant de session est stocké dans un cookie, mais il peut également être ajouté aux URL. (C'est le
PHPSESSID
paramètre de requête que vous voyez parfois)la source
Ils sont généralement stockés sur le serveur. L'endroit où ils sont stockés dépend de vous en tant que développeur. Vous pouvez utiliser la
session.save_handler
variable de configuration et lesession_set_save_handler
pour contrôler la manière dont les sessions sont enregistrées sur le serveur. La méthode d'enregistrement par défaut consiste à enregistrer les sessions dans des fichiers. L'endroit où ils sont enregistrés est contrôlé par lasession.save_path
variable.la source
Un ajout: il convient de noter que, dans le cas où "/ tmp" est le répertoire où les données de session sont stockées (qui semble être la valeur par défaut), les sessions ne persisteront pas après le redémarrage de ce serveur Web, comme "/ tmp "est souvent purgé lors du redémarrage. Le concept de persistance du côté client tient et tombe avec la persistance du stockage sur le serveur - qui peut échouer si le répertoire "/ tmp" est utilisé pour les données de session.
la source
Sur Debian (n'est-ce pas le cas pour la plupart des distributions Linux?), Il est enregistré dans / var / lib / php5 /. Comme mentionné ci-dessus, il est configuré dans votre php.ini.
la source
J'utilise Ubuntu et mes sessions sont stockées dans / var / lib / php5.
la source
Comme M. Taylor l'a souligné, cela est généralement défini dans php.ini. Ils sont généralement stockés sous forme de fichiers dans un répertoire spécifique.
la source
Pour ubuntu 16.10, les sessions sont enregistrées dans / var / lib / php / session / ...
la source
Comment ça marche? Comment sait-il que c'est moi?
La plupart des sessions définissent une clé utilisateur (appelée sessionid) sur l'ordinateur de l'utilisateur qui ressemble à ceci: 765487cf34ert8dede5a562e4f3a7e12. Ensuite, lorsqu'une session est ouverte sur une autre page, il scanne l'ordinateur pour une clé utilisateur et s'exécute sur le serveur pour obtenir vos variables.
Si vous effacez par erreur le cache, votre clé utilisateur sera également effacée. Vous ne pourrez plus récupérer vos variables du serveur car vous ne connaissez pas votre identifiant.
la source
Dans ma machine Ubuntu, les sessions sont stockées sur
et vous devez
sudo ls
dans ce répertoire seulementls
il lanceraEt sur mon serveur Windows Wamp, les sessions php sont stockées dans
et si vous installez php autonome sur Windows, aucune valeur n'est définie par défaut
la source
Bon nombre des réponses ci-dessus sont opaques. À mon avis, l'auteur de cette question veut simplement savoir où les variables de session sont stockées par défaut. Selon ceci: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions ils sont simplement stockés sur le serveur par défaut . J'espère que d'autres trouveront cette contribution significative.
la source