$ _SESSION变量存储在哪里?

Ste*_*uso 154 php

$_SESSION存储在客户端或服务器上的变量?

rja*_*lor 160

$_SESSION变量存储的位置由PHP的session.save_path配置决定.通常这是/tmp在Linux/Unix系统上.phpinfo()如果不是100%确定,请使用此功能查看您的特定设置,方法是DocumentRoot在您的域中创建包含此内容的文件:

<?php
    phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

以下是有关此配置设置的PHP文档的链接:

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


tro*_*skn 127

如上所述,内容存储在服务器上.然而,会话由session-id标识,session-id存储在客户端并随每个请求一起发送.通常会话ID存储在cookie中,但也可以附加到URL.(这是PHPSESSID你有时看到的查询参数)

  • +1因为你暗示cookie不存储$ _SESSION的内容(这些内容存储在服务器上,所以不容易被客户端修改) (39认同)
  • 很好的答案!我在搜索这个问题:"为什么会话在删除浏览器缓存后会过期?".你救了我的一天. (10认同)
  • 服务器创建文件sess_7nu9p0fvidvva6ouaugqcc8292并在浏览器警报上(getCookie('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292 (2认同)
  • Plus1 - 用于回答问题:"...存储在客户端或服务器上?" (2认同)

Rob*_*edy 22

它们通常存储在服务器上.它们存储的位置取决于您作为开发人员.您可以使用session.save_handler配置变量和session_set_save_handler控制会话在服务器上的保存方式.默认保存方法是将会话保存到文件.他们得救的地方是由session.save_path变量控制的.


小智 18

一个补充:应该注意的是,如果"/ tmp"是存储会话数据的目录(这似乎是默认值),则重新启动该Web服务器后会话将不会持续存在,如"/ tmp" "在重启期间经常被清除.客户端智能持久性的概念随着服务器上存储的持久性而下降 - 如果"/ tmp"目录用于会话数据,则可能会失败.


Han*_*ans 13

在Debian上(对于大多数Linux发行版来说不是这种情况吗?),它保存在/ var/lib/php5 /中.如上所述,它是在php.ini中配置的.


Vas*_*raz 12

我正在使用Ubuntu,我的会话存储在/ var/lib/php5中.

  • 谢谢,这就是我想要的。是的,如果它们不在通常的位置,我需要打开 INI,但我只想知道“嘿,会话_通常_存储在哪里?” /var/lib/php/sessions/ 它是。 (3认同)

Bri*_*her 7

正如泰勒先生指出的那样,这通常是在php.ini中设置的.通常它们作为文件存储在特定目录中.


Luk*_*říž 6

对于 ubuntu 16.10,会话保存在 /var/lib/php/session/...