Назад | Перейти на главную страницу

Кажется, что PHP имеет файлы сеанса в двух разных местах?

У меня есть 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