Где хранятся переменные $ _SESSION?


158

Хранятся ли $_SESSIONпеременные на клиенте или сервере?


на сервере, где вы запускаете приложение php, для конкретного пути вы должны проверить с помощью phpinfo ()
densityx

Ответы:


168

Расположение $_SESSIONхранилища переменных определяется session.save_pathконфигурацией PHP . Обычно это /tmpв системе Linux / Unix. Используйте phpinfo()функцию для просмотра ваших конкретных настроек, если не уверены на 100%, создав файл с таким содержимым в DocumentRootвашем домене:

<?php
    phpinfo();
?>

Вот ссылка на документацию PHP по этому параметру конфигурации:

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


129

Как уже упоминалось, содержимое хранится на сервере. Однако сеанс идентифицируется идентификатором сеанса, который сохраняется на клиенте и отправляется с каждым запросом. Обычно идентификатор сессии хранится в файле cookie, но его также можно добавить к URL-адресу. (Это параметр PHPSESSIDзапроса, который вы несколько раз видите)


41
+1, потому что вы подразумевали, что куки не хранят содержимое $ _SESSION (это содержимое хранится на сервере, поэтому не подвержено модификации со стороны клиента)
shufler

12
Отличный ответ! Я искал вопрос: «Почему сессии удаляются после удаления кэша браузера?». И ты спас мой день.
Ученик

2
сервер создает файл sess_7nu9p0fvidvva6ouaugqcc8292 и по предупреждению браузера (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb

2
Plus1 - для ответа на вопрос: "... хранится на клиенте или на сервере?"
Алекс Варгас

22

Они обычно хранятся на сервере. Где они хранятся, решать вам как разработчику. Вы можете использовать session.save_handlerпеременную конфигурации и, session_set_save_handlerчтобы контролировать, как сеансы сохраняются на сервере. Метод сохранения по умолчанию - сохранение сеансов в файлы. Где они сохраняются, контролируется session.save_pathпеременной.


18

Одно дополнение: следует отметить, что в случае, если «/ tmp» является каталогом, в котором хранятся данные сеанса (что представляется значением по умолчанию), сеансы не будут сохраняться после перезагрузки этого веб-сервера, как «/ tmp» часто очищается во время перезагрузки. Концепция клиентской персистентности остается неизменной с сохранением хранилища на сервере, что может привести к сбою, если каталог / tmp используется для данных сеанса.


13

В Debian (разве это не так для большинства дистрибутивов Linux?) Он сохраняется в / var / lib / php5 /. Как уже упоминалось выше, он настроен в вашем php.ini.


12

Я использую Ubuntu и мои сеансы хранятся в / var / lib / php5.


1
Спасибо, это все, что я хотел. Да, если бы они не были в обычном месте, мне нужно было взломать INI, но я просто хотел знать: "Эй, где обычно хранятся сессии ?" / var / lib / php / session / это так.
Эрик Л.

7

Как отметил г-н Тейлор, это обычно устанавливается в php.ini. Обычно они хранятся в виде файлов в определенном каталоге.



0

Как это работает? Откуда он знает, что это я?

Большинство сеансов устанавливают пользовательский ключ (называемый sessionid) на компьютере пользователя, который выглядит примерно так: 765487cf34ert8dede5a562e4f3a7e12. Затем, когда сеанс открывается на другой странице, он сканирует компьютер на предмет наличия ключа пользователя и запускается на сервер, чтобы получить ваши переменные.

Если вы по ошибке очистили кеш, ваш ключ пользователя также будет очищен. Вы больше не сможете получать переменные с сервера, так как не знаете свой идентификатор.


0

В моей машине Ubuntu сессии хранятся в

/var/lib/php/sessions

а надо sudo lsв этот каталог только lsего кидать

ls: не могу открыть каталог '.': В доступе отказано

И на моем сервере Windows Wamp php сессии хранятся в

C:\wamp64\tmp

и если вы устанавливаете автономный php на windows, то значение по умолчанию не устанавливается

session.save_path => no value => no value

-1

Многие из приведенных выше ответов непрозрачны. По моему мнению, автор этого вопроса просто хочет знать, где переменные сессии хранятся по умолчанию. В соответствии с этим: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions они просто хранятся на сервере по умолчанию . Надеюсь, другие найдут этот вклад значимым.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.