gpt4 book ai didi

php - 无法使用 PDOSessionHandler Silex 设置 session 生存期

转载 作者:搜寻专家 更新时间:2023-10-31 21:56:10 25 4
gpt4 key购买 nike

我正在使用 Silex 构建一个小型后台项目,我正在使用 PdoSessionHandler 将 session 存储在数据库中。我已经成功地将 session 存储在数据库中,但似乎将 cookie_lifetime 参数设置为 $app 变量会更改 cookie 的到期时间,但不会更改数据库中的 session 生命周期。

$app->register(new Silex\Provider\SessionServiceProvider(), [
'session.storage.options' => [
'name' => '_PROJECTBACKOFFICE',
'cookie_lifetime' => 15552000,
],
]);

查看 PdoSessionHandler 的代码后,数据库中的 session 生命周期值似乎采用 php.ini 设置 session.gc_maxlifetime 中的值:

$maxlifetime = (int) ini_get('session.gc_maxlifetime');

并将值存入数据库字段

$mergeStmt = $this->pdo->prepare($mergeSql);
$mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
$mergeStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
$mergeStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);

因此,看起来增加 session 生命周期的唯一方法是更改​​ php.ini 设置。有没有人成功地以编程方式改变了数据库中的生命周期?

最佳答案

你可以在.htaccess中设置,这是唯一的方法。它必须高于 SessionServiceProvider() 设置中设置的生命周期:

php_value session.gc_maxlifetime "3600"

关于php - 无法使用 PDOSessionHandler Silex 设置 session 生存期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33524329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com