Расположение файлов сеанса в Apache/PHP
Каково расположение файлов сеанса по умолчанию при установке Apache/PHP в Ubuntu 10.10?
7 answers
Значение по умолчанию session.save_path
имеет значение ""
, которое будет отображаться во временном каталоге вашей системы. Смотрите этот комментарий по адресу https://bugs.php.net/bug.php?id=26757 заявляя:
Новым значением по умолчанию для save_path в предстоящем выпуске (sic) будет пустая строка, которая вызывает проверку временного каталога.
Вы можете использовать sys_get_temp_dir
чтобы вернуть путь к каталогу, используемому для временных файлов
Чтобы найти текущий путь сохранения сеанса, вы можете использовать
Обратитесь к этому ответу , чтобы узнать, каков временный путь, когда эта функция возвращает пустую строку.
Сначала проверьте значение 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
(хотя я сам этого не проверял).
Другим распространенным местоположением по умолчанию, помимо /tmp/
, является /var/lib/php5/
Если вы не уверены в скомпилированном по умолчанию, посмотрите php.ini для Apache:
Текущие местоположения Ubuntu/Debian:
Более старая установка php5: /etc/php5/apache2/php.ini
Ubuntu 16.XX и/или php5 или php7: /etc/php/*/apache2/php.ini
Обычно при этом отображается закомментированное значение по умолчанию.
Или:
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, как до параметров пути сохранения по умолчанию. Вы также можете использовать аналогичную команду, чтобы повторить настройку Apache для команды wget/curl или веб-страницы. Но гораздо проще просто использовать grep для этого в Apache php.ini.
РЕДАКТИРОВАТЬ: Согласно комментарию @aesede ->Добавлено php -i
. Спасибо
У меня была такая же проблема с поиском правильного пути для сеансов на Mac. В общем, я обнаружил, что PHP CLI имеет другой временный каталог, чем модуль Apache: Apache использовал /var/tmp
, в то время как CLI использовал что-то вроде /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T
. Но в обоих случаях sys_get_temp_dir()
указал мне правильный путь, когда session.save_path
пуст. Использование PHP 5.5.4.
Я верю, что это в /tmp/. Проверьте свою функцию phpinfo, хотя она должна указывать session.save_path где-то там.
В зависимости от типа сервера, на котором вы работаете, он может отличаться. Чтобы найти каталог, выполните следующий поиск в файле php.ini.
Upload_tmp_dir="c:/wamp/tmp "
Каталог может быть другим для вас.