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

Сохраняются ли переменные $_SESSION на клиенте или на сервере?

Ответ 1

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

<?php
    phpinfo();
?>

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

Для ubuntu 16.10 сеансы сохраняются в/var/lib/php/session/...

Ответ 9

Как это работает? Как он это знает?

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

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

Ответ 10

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