Каково местоположение файлов сеансов по умолчанию при установке Apache/PHP на Ubuntu 10.10?
Расположение файлов сеансов в Apache/PHP
Ответ 1
Параметр session.save_path
умолчанию имеет значение ""
которое будет соответствовать вашему системному временному каталогу. Посмотрите этот комментарий на https://bugs.php.net/bug.php?id=26757, заявив:
Новое значение по умолчанию для save_path в предстоящем выпуске (sic) будет пустой строкой, которая вызывает проверку временного каталога.
Вы можете использовать sys_get_temp_dir
чтобы вернуть путь к каталогу, используемый для временных файлов
Чтобы найти текущий путь сохранения сеанса, вы можете использовать
Обратитесь к этому ответу, чтобы узнать, каков временный путь, когда эта функция возвращает пустую строку.
Ответ 2
Сначала проверьте значение 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
(я не тестировал это сам, хотя).
Ответ 3
Другим общим положением по умолчанию, кроме /tmp/
, является /var/lib/php5/
Ответ 4
Если вы не уверены в скомпилированных настройках по умолчанию, посмотрите соответствующий php.ini
.
Обычно это покажет закомментированное значение по умолчанию.
Ubuntu/Debian старые/новые местоположения php.ini:
Более /etc/php5/apache2/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
НОТА:
Версия "cli"/php.ini для командной строки обычно совпадает с версией Apache/FPM по сравнению с настройками пути сеанса. Вы также можете использовать аналогичную команду, чтобы отобразить настройку Apache/Nginx для команды или веб-страницы wget/curl. Но его так же легко найти в надлежащем Apache или FPM php.ini
чтобы гарантировать, что вы видите правильный путь сеанса.
РЕДАКТИРОВАТЬ: За комментарий @aesede → Добавлен php -i
. Спасибо
Ответ 5
У меня была такая же проблема, как найти правильный путь для сеансов на 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.
Ответ 6
Я верю в /tmp/. Проверьте свою функцию phpinfo, но она должна сказать session.save_path где-то там.
Ответ 7
В зависимости от типа сервера, который вы используете, он может меняться. Чтобы найти каталог, выполните поиск следующих файлов php.ini.
upload_tmp_dir = "c:/wamp/tmp"
Каталог может отличаться для вас.