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

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

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

densityx 01.01.2018 16:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
166
1
112 563
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Как отметил г-н Тейлор, это обычно устанавливается в 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 (это содержимое хранится на сервере, поэтому не подвержено изменениям со стороны клиента)

shufler 11.11.2010 18:01

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

Pupil 17.06.2013 11:50

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

zloctb 07.10.2013 11:30

Plus1 - Для ответа на вопрос: «... хранится на клиенте или сервере?»

Alex Vargas 31.10.2016 01:44

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

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

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

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

Eric L. 24.11.2015 20:00

Для 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

Другие вопросы по теме