小编chi*_*enz的帖子

Symfony PdoSessionHandler与PostgreSql不能按预期工作

我试图将php会话从文件移动到数据库。之后:pdo_session_storage我设置了symfony,如下所示:

config.yml:

session:
    handler_id:  session.handler.pdo
Run Code Online (Sandbox Code Playgroud)

services.yml:

session.handler.pdo:
    class:  Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
    arguments:
        - "pgsql:host=%database_host_access%;port=%database_port_access%;dbname=%database_name_access%"
        - { db_username: %database_user_access%, db_password: %database_password_access% }
Run Code Online (Sandbox Code Playgroud)

可以正确看到数据库,并为每个会话在表中创建一行:sessions

问题是:每次我重新加载页面时,会话属性都会丢失。似乎数据是从零开始写入的,而不是附加到现有属性中。

通过一些调试,我发现NativeSessionStorage->loadSession()装入的数据$_SESSION为空,因此SessionHandlerProxy->write()写入具有空属性的数据。

NativeSessionStorage :: loadSession():

protected function loadSession(array &$session = null)
{
    if (null === $session) {
        $session = &$_SESSION;
    }

    $bags = array_merge($this->bags, array($this->metadataBag));

    foreach ($bags as $bag) {
        $key = $bag->getStorageKey();
        $session[$key] = isset($session[$key]) ? $session[$key] : array();
        $bag->initialize($session[$key]);
    }

    $this->started = true;
    $this->closed = false;
}
Run Code Online (Sandbox Code Playgroud)

哪里 …

postgresql session symfony

3
推荐指数
1
解决办法
1122
查看次数

标签 统计

postgresql ×1

session ×1

symfony ×1