I am trying to set session save path dynamically in Bundle extension class
namespace AdminBundle\DependencyInjection;
class AdminExtension extends Extension{
...
$sessionDir = $envDir . "session/store/$userDir/__sess";
$container->setParameter("session.save_path", $sessionDir);
...
}
Symfony caches Extension class
$sessionDir = $envDir . "session/store/12345/__sess";
So it make sessionDir equal to directory of user who make first call.
It works normal for first user but doesn't work for others.
What can I do to solve this problem?
I solved problem by writing my own NativeSessionHandler
class NativeFileSessionHandler extends NativeSessionHandler
{
/**
* @param ContainerInterface $container
*/
public function __construct(ContainerInterface $container)
{
...
ini_set('session.save_path', $envDir . "session/storefront/$userDir/__sess");
ini_set('session.save_handler', 'files');
}
}
services.yml
custom_file_session_handler:
class: CoreBundle\Session\Handler\NativeFileSessionHandler
arguments: [@service_container]
config.yml
framework:
session:
handler_id: custom_file_session_handler