Zend framework2 DbTableGateway未将会话信息写入数据库表

Zend framework2 DbTableGateway未将会话信息写入数据库表,zend-framework2,php,zend-session,Zend Framework2,Php,Zend Session,我试图使用DbTableGateway将会话信息存储在MySQL数据库中,但我的“会话”表仍然是空的。它从不包含任何行。这是我的代码(或多或少是从中复制/粘贴的): 下面是我使用此代码的视频演示: 正如您在视频中所看到的,会话信息在请求之间被保留,但不会存储在数据库中 我在Zend\Session\SaveHandler\DbTableGateway中的每个函数中都添加了断点,唯一被击中的是在_构造函数中。所以构造函数被调用了,但显然它从来没有被用于其他任何事情 我错过了什么 我正在PHP5.

我试图使用DbTableGateway将会话信息存储在MySQL数据库中,但我的“会话”表仍然是空的。它从不包含任何行。这是我的代码(或多或少是从中复制/粘贴的):

下面是我使用此代码的视频演示:

正如您在视频中所看到的,会话信息在请求之间被保留,但不会存储在数据库中

我在
Zend\Session\SaveHandler\DbTableGateway
中的每个函数中都添加了断点,唯一被击中的是在_构造函数中。所以构造函数被调用了,但显然它从来没有被用于其他任何事情

我错过了什么

我正在PHP5.3上使用Zend Framework 2.2.2


-Josh

如果您需要快速实现,我找到了一些模块来实现这一点

  • 要使用当前代码,请检查:

    • **DbTableGatewayOptions**(id、数据、生存期等)的选项

    • SessionManager$manager->start()的开始


    检查application.config.php并确保应用程序模块处于顶层

    还要确保
    'vendor/composer/autoload_namespace.php'
    'vendor/composer/autoload_static.php'
    是否添加了zend和zendxml库路径

    例如:
    'Zend'=>数组(vendorDir./ZF2/library),
    
    “ZendXml”=>array(vendorDir./ZF2/library”)

    非常感谢您的建议,我可能得到了这个方法,但我真的很想了解
    Zend\Session\SaveHandler\DbTableGateway
    为什么没有按配置工作。我尝试添加
    $manager->start()
    。没有变化。然后我尝试了
    $manager->start(true)
    。还是没有变化。我不会将任何选项传递给DbTableGatewayOptions。我所做的与ZF文档中所示的相同,在我的问题中链接到。但文件可能不完整。如何设置DbTableGatewayOptions对象?没有更改,会话数据库中仍然没有显示任何内容:-(
    $dbAdapter = new Zend\Db\Adapter\Adapter(array(
        'driver' => 'pdo_mysql',
        'database' => 'db-name',
        'username' => 'username',
        'password' => 'password!'
    ));
    $tableGateway = new \Zend\Db\TableGateway\TableGateway('session', $dbAdapter);
    $saveHandler = new \Zend\Session\SaveHandler\DbTableGateway($tableGateway, new \Zend\Session\SaveHandler\DbTableGatewayOptions());
    $manager = new \Zend\Session\SessionManager();
    $manager->setSaveHandler($saveHandler);
    
    $someContainer = new Container('SomeSessionNamespace');
    $someContainer->aBitOfData = 'tasty morsel of data';
    
    $options = new \Zend\Session\SaveHandler\DbTableGatewayOptions();
    $options->setDataColumn('data');
    $options->setIdColumn('id');
    $options->setLifetimeColumn('lifetime');
    $options->setNameColumn('name');
    $options->setModifiedColumn('modified');