





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