У меня есть CentOS 6, на котором запущены nginx и PHP 7.2.
Мои файлы сеанса php 7.2 существуют там, где я ожидал, в
/var/opt/remi/php72/lib/php/session
Однако я только что заметил, что их меньшее количество существует в
/tmp
У меня установлена только одна версия php, на которой работает несколько сайтов. phpInfo();
сообщает первый каталог для каждого сайта. Я не могу найти ссылку на /tmp
насчет сессий вообще.
Я обнаружил, что если я убегу php -r 'phpInfo();' | grep save_path
я получил session.save_path => no value => no value
, так что я думаю, это причина? Т.е. мои задания cron создают пустые файлы сеанса.
Это нормально? Если да, то почему? Почему при запуске php из командной строки не используется значение, установленное в php.ini?
Спасибо
Это нормально?
Да.
Это задокументировано в файле конфигурации. У каждого пользователя должно быть другое местоположение, чтобы избежать проблем с доступом.
Таким образом, путь настраивается в каждом файле SAPI
По умолчанию в / tmp (для пользователей CLI)
см. комм. в php.ini
; RPM note : session directory must be owned by process owner
; for mod_php, see /etc/httpd/conf.d/php.conf
; for php-fpm, see /etc/php-fpm.d/*conf
;session.save_path = "/tmp"
Итак, / var / opt / remi / php72 / lib / php / session используется только пользователем "apache" (пул FPM по умолчанию).
И если вы используете несколько пулов FPM, работающих с разными пользователями, вы должны установить для каждого свое местоположение, см. Php-fpm.d / www.conf
; Set the following data paths to directories owned by the FPM process user.
;
; Do not change the ownership of existing system directories, if the process
; user does not have write permission, create dedicated directories for this
; purpose.
;
; See warning about choosing the location of these directories on your system
; at http://php.net/session.save-path
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
;php_value[opcache.file_cache] = /var/lib/php/opcache