$ _SESSION变量存储在哪里?

时间:2009-01-18 04:10:55

标签: php

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

11 个答案:

答案 0 :(得分:157)

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

<?php
    phpinfo();
?>

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

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

答案 1 :(得分:125)

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

答案 2 :(得分:22)

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

答案 3 :(得分:18)

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

答案 4 :(得分:12)

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

答案 5 :(得分:12)

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

答案 6 :(得分:7)

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

答案 7 :(得分:4)

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

答案 8 :(得分:1)

它是如何工作的?它是如何知道的?

大多数会话在用户计算机上设置了一个用户密钥(称为sessionid),如下所示:765487cf34ert8dede5a562e4f3a7e12。然后,当在另一个页面上打开会话时,它会扫描计算机以获取用户密钥并运行到服务器以获取变量。

如果您错误地清除了缓存,那么您的用户密钥也将被清除。由于您不知道自己的身份证明,因此无法再从服务器获取变量。

答案 9 :(得分:0)

在我的Ubuntu机器中,会话存储在

/var/lib/php/sessions

,您只需sudo ls在该目录中ls它将抛出

ls:无法打开目录“。”:权限被拒绝

在我的Windows Wamp服务器上,php会话存储在

C:\wamp64\tmp

如果在Windows上安装独立的php,则默认情况下未设置任何值

session.save_path => no value => no value

答案 10 :(得分:-1)

上面的许多答案都是不透明的。我认为这个问题的作者只是想知道默认情况下会话变量存储在哪里。据此:https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions默认情况下,它们只是存储在服务器上。希望其他人会发现此贡献有意义。