Хранятся ли $_SESSION
переменные на клиенте или сервере?
Хранятся ли $_SESSION
переменные на клиенте или сервере?
Ответы:
Расположение $_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
Как уже упоминалось, содержимое хранится на сервере. Однако сеанс идентифицируется идентификатором сеанса, который сохраняется на клиенте и отправляется с каждым запросом. Обычно идентификатор сессии хранится в файле cookie, но его также можно добавить к URL-адресу. (Это параметр PHPSESSID
запроса, который вы несколько раз видите)
Они обычно хранятся на сервере. Где они хранятся, решать вам как разработчику. Вы можете использовать session.save_handler
переменную конфигурации и, session_set_save_handler
чтобы контролировать, как сеансы сохраняются на сервере. Метод сохранения по умолчанию - сохранение сеансов в файлы. Где они сохраняются, контролируется session.save_path
переменной.
Одно дополнение: следует отметить, что в случае, если «/ tmp» является каталогом, в котором хранятся данные сеанса (что представляется значением по умолчанию), сеансы не будут сохраняться после перезагрузки этого веб-сервера, как «/ tmp» часто очищается во время перезагрузки. Концепция клиентской персистентности остается неизменной с сохранением хранилища на сервере, что может привести к сбою, если каталог / tmp используется для данных сеанса.
Я использую Ubuntu и мои сеансы хранятся в / var / lib / php5.
Как отметил г-н Тейлор, это обычно устанавливается в php.ini. Обычно они хранятся в виде файлов в определенном каталоге.
Для Ubuntu 16.10 сессии сохраняются в / var / lib / php / session / ...
Как это работает? Откуда он знает, что это я?
Большинство сеансов устанавливают пользовательский ключ (называемый sessionid) на компьютере пользователя, который выглядит примерно так: 765487cf34ert8dede5a562e4f3a7e12. Затем, когда сеанс открывается на другой странице, он сканирует компьютер на предмет наличия ключа пользователя и запускается на сервер, чтобы получить ваши переменные.
Если вы по ошибке очистили кеш, ваш ключ пользователя также будет очищен. Вы больше не сможете получать переменные с сервера, так как не знаете свой идентификатор.
В моей машине Ubuntu сессии хранятся в
/var/lib/php/sessions
а надо sudo ls
в этот каталог только ls
его кидать
ls: не могу открыть каталог '.': В доступе отказано
И на моем сервере Windows Wamp php сессии хранятся в
C:\wamp64\tmp
и если вы устанавливаете автономный php на windows, то значение по умолчанию не устанавливается
session.save_path => no value => no value
Многие из приведенных выше ответов непрозрачны. По моему мнению, автор этого вопроса просто хочет знать, где переменные сессии хранятся по умолчанию. В соответствии с этим: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions они просто хранятся на сервере по умолчанию . Надеюсь, другие найдут этот вклад значимым.