Расположение файлов сессии в Apache / PHP - PullRequest
66 голосов
/ 08 февраля 2011

Каково расположение файлов сеансов по умолчанию при установке Apache / PHP в Ubuntu 10.10?

Ответы [ 7 ]

67 голосов
/ 08 февраля 2011

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

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

Вы можете использовать sys_get_temp_dir для возврата пути каталога, используемого для временных файлов

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

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

59 голосов
/ 04 июня 2013

Сначала проверьте значение 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 (хотя я сам не проверял это).

15 голосов
/ 30 ноября 2012

Другое общее расположение по умолчанию, кроме /tmp/, равно /var/lib/php5/

12 голосов
/ 08 мая 2015

Если вы не уверены в скомпилированном значении по умолчанию, посмотрите соответствующий php.ini.
Обычно это покажет закомментированное значение по умолчанию.

Ubuntu / Debian старые / новые местоположения php.ini:
Более старый php5 с Apache: /etc/php5/apache2/php.ini
Более старый php5 с NGINX + FPM: /etc/php5/fpm/php.ini
Ubuntu 16+ с Apache: /etc/php/*/apache2/php.ini
Ubuntu 16+ с NGINX + FPM - /etc/php/*/fpm/php.ini

/*/ = ваша текущая версия PHP модуля, используемого на вашем веб-сервере.

Вам необходимо выяснить используемую версию PHP, а затем найти соответствующую запись php.ini:

Одна строка (более новая версия Ubuntu / Deb):

APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") && grep ";session.save_path" /etc/php/${APACHEPHPVER}/apache2/php.ini

Результат:

;session.save_path = "/var/lib/php/sessions"

Или:

$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"

7.3

Поскольку PHP 7.3 является версией, работающей на веб-сервере Apache, вы должны использовать это:

$ grep "session.save_path" /etc/php/7.3/apache2/php.ini

;session.save_path = "/var/lib/php/sessions"

Или через командную строку / "cli" (см. Примечание ниже):

php -r 'echo session_save_path() . "\n";'

или

php -i | grep session.save_path

или

php -r 'echo phpinfo();' | grep session.save_path

Примечание:

'php.ini' 'cli' / версия командной строки имеет обычно то же значение по умолчанию, что и версии Apache / FPM, что и параметр пути сеанса. Вы также можете использовать аналогичную команду для вывода настроек Apache / Nginx в команду wget / curl или на веб-страницу. Но его так же легко найти в собственно Apache или FPM php.ini, чтобы гарантировать, что вы видите правильный путь сеанса.

РЕДАКТИРОВАТЬ: За комментарий @aesede -> Добавлено php -i. Благодаря

4 голосов
/ 01 октября 2013

У меня была такая же проблема с поиском правильного пути для сеансов на Mac.В общем, я обнаружил, что CLI PHP имеет временный каталог, отличный от модуля Apache: Apache использовал /var/tmp, а CLI использовал что-то вроде /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T.Но оба пути, sys_get_temp_dir() дали мне правильный путь, когда session.save_path пуст.Использование PHP 5.5.4.

0 голосов
/ 08 февраля 2011

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

upload_tmp_dir = "c: / wamp / tmp"

Каталог может быть другим для вас.

0 голосов
/ 08 февраля 2011

Я верю, что это в / tmp /.Проверьте вашу функцию phpinfo, хотя там должно быть где-то сессия session.save_path.

...