В файле конфигурации моего проекта у меня есть:
session:
handler_id: session.handler.native_file
save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
"%kernel.root_dir%/../var/sessions
принадлежит wwww-data
(и да, php-fpm работает как www-data
).
Когда проект запускается, в этом каталоге создается (пустой) файл сеанса, но, очевидно, у php / symfony есть проблемы с его чтением / записью, несмотря на то, что он может правильно его создать. Вот только что созданный пустой файл сеанса (после этого запроса не выполнялись никакие другие процессы):
Запрос умирает, вызывая исключение:
Файл данных сеанса не создан вашим uid.
Я нашел этот ответ (и этот один), и, сделав это (установив save_path
в моем сеансе на "/var/lib/php/sessions"
, я могу продолжить (и я вижу, что мои файлы сеанса не только создаются, но и их содержимое действительно находится на месте), но Я пытаюсь понять, почему не удается сохранить файлы сеанса в настраиваемом месте.
В моей конфигурации PHP я вижу, что для session.save_path
установлено значение /var/lib/php/session
, но я ожидал, что смогу переопределить это во время выполнения.
Что меня действительно бесит, так это то, что файл сеанса создается (так что с разрешениями файлов должно быть все в порядке), но не записывается в него.
Я запускаю Symfony 3.2.2 поверх nginx + php-fpm (7.0).
Почему это происходит? Есть ли какой-либо другой параметр, который я должен использовать, чтобы php мог переопределить эту конфигурацию и записать свои файлы сеансов в другом месте?
По следу я вижу, что:
NativeSessionStorage ->start()
вызывается и выполняетsession_start
(который возвращает true)- Затем вызывается
SessionHandlerProxy ->read($sessionId)
и выдает исключение при вызове$this->handler->read($sessionId);
.
setfacl
) - person tftd   schedule 28.01.2017