在我的项目的配置文件,我有:
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上的nginx + PHP-FPM(7.0)的顶部3.2.2。
这究竟是为什么? 有没有我应该使用这样的PHP能够覆盖这个配置,写它的会话任何其他设置文件在其他地方?
从跟踪我看到:
-
NativeSessionStorage ->start()
被调用,并执行session_start
(返回true) - 然后
SessionHandlerProxy ->read($sessionId)
被调用,调用时抛出异常$this->handler->read($sessionId);
。