Сохраняются ли переменные $_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 они просто хранятся на сервере по умолчанию. Надеюсь, другие найдут этот вклад значимым.