Ubuntu php session path

Where are $_SESSION variables stored?

The location of the $_SESSION variable storage is determined by PHP’s session.save_path configuration. Usually this is /tmp on a Linux/Unix system. Use the phpinfo() function to view your particular settings if not 100% sure by creating a file with this content in the DocumentRoot of your domain:

Here is the link to the PHP documentation on this configuration setting:

As mentioned already, the contents are stored at the server. However the session is identified by a session-id, which is stored at the client and send with each request. Usually the session-id is stored in a cookie, but it can also be appended to urls. (That’s the PHPSESSID query-parameter you some times see)

+1 because you’ve implied that cookies do not store the contents of $_SESSION (these contents are stored on the server, so are not vulnerable to modification by the client)

Excellent answer! I was searching for the question: «Why do sessions expire after deleting browser cache?». And you saved my day.

server create file sess_7nu9p0fvidvva6ouaugqcc8292 аnd on browser alert(getCookie(‘PHPSESSID’));//7nu9p0fvidvva6ouaugqcc8292

They’re generally stored on the server. Where they’re stored is up to you as the developer. You can use the session.save_handler configuration variable and the session_set_save_handler to control how sessions get saved on the server. The default save method is to save sessions to files. Where they get saved is controlled by the session.save_path variable.

One addition: It should be noted that, in case «/tmp» is the directory where the session data is stored (which seems to be the default value), the sessions will not persist after reboot of that web server, as «/tmp» is often purged during reboot. The concept of a client-wise persistence stands and falls with the persistence of the storage on the server — which might fail if the «/tmp» directory is used for session data.

On Debian (isn’t this the case for most Linux distros?), it’s saved in /var/lib/php5/. As mentioned above, it’s configured in your php.ini.

I am using Ubuntu and my sessions are stored in /var/lib/php5.

Thanks, that’s all I wanted. Yeah, if they weren’t in the usual spot, I’ll need to crack open the INIs, but I just wanted to know «Hey, where are the sessions usually stored?» /var/lib/php/sessions/ it is.

Читайте также:  Php зашифровать пароль md5

As Mr. Taylor pointed out this is usually set in php.ini. Usually they are stored as files in a specific directory.

For ubuntu 16.10 are sessions save in /var/lib/php/session/.

In my Ubuntu machine sessions are stored at

and you have to sudo ls in this directory only ls it will throw

ls: cannot open directory ‘.’: Permission denied

And on my Windows Wamp server php sessions are stored in

and if you install standalone php on windows then there is no value set by default

session.save_path => no value => no value 

How does it work? How does it know it’s me?

Most sessions set a user-key(called the sessionid) on the user’s computer that looks something like this: 765487cf34ert8dede5a562e4f3a7e12. Then, when a session is opened on another page, it scans the computer for a user-key and runs to the server to get your variables.

If you mistakenly clear the cache, then your user-key will also be cleared. You won’t be able to get your variables from the server any more since you don’t know your id.

Источник

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

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

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

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

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

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

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

Читайте также:  Html максимальное количество символов input

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

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

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

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

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

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

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

Источник

Расположение файлов сессий в Apache / PHP

Значение по умолчанию session.save_path установлено на «» , которое будет оцениваться в вашем системном каталоге temp. См. Этот комментарий в https://bugs.php.net/bug.php?id=26757:

Новый по умолчанию для save_path в предстоящей версии release (sic) будет пустой строкой, которая заставляет пробный каталог проверяться.

Чтобы найти текущий путь сохранения сеанса, вы можете использовать

Обратитесь к этому ответу, чтобы узнать, что такое временный путь, когда эта функция возвращает пустую строку.

Расположение установлено, а не «по умолчанию» в Ubuntu 10.10. Чистая сборка PHP может дать вам это, но не во всех сборках Debian / Ubuntu, которые я использовал. Вопрос об оригинале относится к Ubuntu 10.10. Итак, просто посмотрите в командной строке за последний комментарий (или мой ответ), так как расположение может отличаться от ‘default’ / blank / tmp в зависимости от используемого дистрибутива Linux.

Предупреждение!! Я думаю, что запуск php -r ‘echo session_save_path (), «\ n»;’ как упоминалось выше, будет использоваться другой файл php.ini (возможно, /etc/php/7.0/cli/php.ini вместо /etc/php/7.0/apache2/php.ini), и поэтому может иметь другое значение » session.save_path»

Читайте также:  Test local html file

@Magmatic верен, есть два файла php.ini , php_info() сообщит вам, какой из них используется во время текущего eval, и locate php.ini , чтобы найти их.

Сначала проверьте значение session.save_path с помощью ini_get(‘session.save_path’) или phpinfo() . Если это не пусто, тогда он покажет, где хранятся файлы сеанса. Во многих сценариях он по умолчанию пуст, и в этом случае читайте:

На машинах Ubuntu или Debian, если session.save_path не установлен, файлы сеанса сохраняются в /var/lib/php5 .

В системах RHEL и CentOS, если session.save_path не установлен, файлы сеанса будут сохранены в /var/lib/php/session

Я думаю, что если вы скомпилируете PHP из исходного кода, тогда, когда session.save_path не будет установлен, файлы сеанса будут сохранены в /tmp (я не тестировал это сам, хотя).

Я использую Ubuntu 12.04.5 LTS и по какой-то причине (я ничего не изменил в php.ini ) мои сеансы находятся в /var/lib/php5/sessions

«Не установлен»? Это установлено — но закомментировано в php.ini. Это не означает, что оно не имеет значения или не установлено. Из командной строки просто выполните: php -i | grep session.save_path для пути сохранения сеанса CLI (и, возможно, Apache). Кроме того, данный php.ini обычно показывает путь по умолчанию — он просто закомментирован.

И да: если ничего не скомпилировано в качестве пути по умолчанию (не так, как в большинстве дистрибутивов), будет использоваться пробел (компиляция по умолчанию). Который затем использовал бы системную временную область (обычно /tmp ) в качестве ее запасного значения / значения по умолчанию. Пожалуйста, обратитесь к php.net/manual/en/…

/etc/php/7.0/*/php.ini УМОЛЧАНИЮ Ubuntu 16.04: /etc/php/7.0/*/php.ini -> ;session.save_path = «/var/lib/php/sessions» — комментарий не означает, что «не установлено» — это все, что я имел в виду. Он явно установлен на что-то отличное от «blank» (/ tmp) .. и НЕ является пустой / пустой строкой

‘set’ = я знаю, что вы имеете в виду: ‘не переопределяется пользователем’ (переопределяет закомментированную настройку ‘default’), но формулировка немного вводит в заблуждение. Просто добавив комментарии, чтобы люди были понятны ..

@bshea, я имею в виду, что ini_get(‘session.save_path’) возвращает «», а phpinfo() показывает «» для «session.save_path». Комментарий в INI-файле не влияет на PHP.

Мой phpinfo () показывает /var/lib/php/sessions session при загрузке apache2. ( i.imgur.com/WugVsgW.png ) по умолчанию / закомментировал apache php.ini. Это не «». (Ubuntu 16.04)

Источник

Оцените статью