¿Dónde se almacenan las variables $ _SESSION?

158

¿Se $_SESSIONalmacenan las variables en el cliente o el servidor?

Steve Gattuso
fuente
en el servidor donde ejecuta la aplicación php, para la ruta específica debe verificar con phpinfo ()
densidadx

Respuestas:

168

La ubicación del $_SESSIONalmacenamiento variable está determinada por la session.save_pathconfiguración de PHP . Por lo general, esto está /tmpen un sistema Linux / Unix. Use la phpinfo()función para ver su configuración particular si no está 100% seguro al crear un archivo con este contenido en DocumentRootsu dominio:

<?php
    phpinfo();
?>

Aquí está el enlace a la documentación de PHP en esta configuración:

http://php.net/manual/en/session.configuration.php#ini.session.save-path

rjamestaylor
fuente
129

Como ya se mencionó, los contenidos se almacenan en el servidor. Sin embargo, la sesión se identifica mediante un id de sesión, que se almacena en el cliente y se envía con cada solicitud. Por lo general, el ID de sesión se almacena en una cookie, pero también se puede agregar a las URL. (Ese es el PHPSESSIDparámetro de consulta que algunas veces ves)

Troelskn
fuente
41
+1 porque ha implicado que las cookies no almacenan el contenido de $ _SESSION (estos contenidos se almacenan en el servidor, por lo que no son vulnerables a modificaciones por parte del cliente)
shufler
12
Excelente respuesta! Estaba buscando la pregunta: "¿Por qué caducan las sesiones después de eliminar el caché del navegador?". Y me salvaste el día.
Alumno
2
servidor crear archivo sess_7nu9p0fvidvva6ouaugqcc8292 y en alerta de navegador (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb
2
Plus1 - Para responder a la pregunta: "... almacenado en el cliente o el servidor?"
Alex Vargas
22

Generalmente se almacenan en el servidor. El lugar donde se almacenan depende de usted como desarrollador. Puede usar la session.save_handlervariable de configuración y la session_set_save_handlerpara controlar cómo se guardan las sesiones en el servidor. El método predeterminado para guardar es guardar sesiones en archivos. El lugar donde se guardan está controlado por la session.save_pathvariable.

Rob Kennedy
fuente
18

Una adición: debe tenerse en cuenta que, en caso de que "/ tmp" sea el directorio donde se almacenan los datos de la sesión (que parece ser el valor predeterminado), las sesiones no persistirán después del reinicio de ese servidor web, como "/ tmp "a menudo se purga durante el reinicio. El concepto de una persistencia basada en el cliente se mantiene y cae con la persistencia del almacenamiento en el servidor, lo que podría fallar si se usa el directorio "/ tmp" para los datos de la sesión.

Gero
fuente
13

En Debian (¿no es este el caso para la mayoría de las distribuciones de Linux?), Se guarda en / var / lib / php5 /. Como se mencionó anteriormente, está configurado en su php.ini.

Hans
fuente
12

Estoy usando Ubuntu y mis sesiones están almacenadas en / var / lib / php5.

Vasyl Teraz
fuente
1
Gracias, eso es todo lo que quería. Sí, si no estuvieran en el lugar habitual, tendré que abrir las INI, pero solo quería saber "Oye, ¿dónde se almacenan generalmente las sesiones ?" / var / lib / php / sessions / es.
Eric L.
7

Como señaló el Sr. Taylor, esto generalmente se establece en php.ini. Por lo general, se almacenan como archivos en un directorio específico.

Brian Fisher
fuente
4

Para ubuntu 16.10 son sesiones guardadas en / var / lib / php / session / ...

Lukáš Kříž
fuente
0

¿Como funciona? ¿Cómo sabe que soy yo?

La mayoría de las sesiones establecen una clave de usuario (llamada sessionid) en la computadora del usuario que se parece a esto: 765487cf34ert8dede5a562e4f3a7e12. Luego, cuando se abre una sesión en otra página, escanea la computadora en busca de una clave de usuario y se ejecuta en el servidor para obtener sus variables.

Si borra la memoria caché por error, su clave de usuario también se borrará. Ya no podrá obtener sus variables del servidor ya que no conoce su identificación.

Emeka Obianom
fuente
0

En mi máquina Ubuntu las sesiones se almacenan en

/var/lib/php/sessions

y tienes que hacerlo sudo lsen este directorio solo lsarrojará

ls: no se puede abrir el directorio '.': permiso denegado

Y en mi servidor Windows Wamp, las sesiones de php se almacenan en

C:\wamp64\tmp

y si instala php independiente en Windows, entonces no hay un valor establecido por defecto

session.save_path => no value => no value
Ali A. Dhillon
fuente
-1

Muchas de las respuestas anteriores son opacas. En mi opinión, el autor de esta pregunta simplemente quiere saber dónde se almacenan las variables de sesión de forma predeterminada. De acuerdo con esto: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions simplemente se almacenan en el servidor de forma predeterminada . Con suerte, otros encontrarán esta contribución significativa.

Evan Gertis
fuente