【问题标题】:phpMyAdmin not removing PHP session properlyphpMyAdmin 没有正确删除 PHP 会话
【发布时间】:2013-10-24 20:26:00
【问题描述】:

我注意到每次我登录到 phpMyAdmin 时都会创建一个新的会话存储文件并且它从未被删除。让我澄清一下:

我登录到 phpMyAdmin,我注意到 PHP 会话 ID 作为名为 phpMyAdmin 的 cookie 传递,其值为“44f4d5s4f4f4d5s”,例如PHP session.save_path 下还有一个文件,其名称为“sess_”,后跟相同的值(“44f4d5s4f4f4d5s”)。这样我就可以知道这个会话存储文件与 PHPMyAmdin 会话相关联。好吧,直到现在都没有错,PHPMyAdmin 只是使用会话。但是如果我关闭浏览器,重新打开并再次浏览到 PHPMyAdmin,则会创建一个新的会话 ID,发送一个具有不同值的新 cookie,当然还会创建一个新的 sess_[ID HERE] 文件。而且旧的并没有从磁盘中删除,我认为,由于创建了新会话而没有使用它们,它们将永远留在那里占用磁盘空间!

我几乎可以肯定这种行为是不希望的。也许 phpMyAdmin 没有调用 session_destroy()?

我附上了我的 config.inc.php,但我不知道从哪里开始寻找会发生这种情况的原因:

<?php
/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

/* End of servers configuration */

$cfg['blowfish_secret'] = '.......';
$cfg['DefaultLang'] = 'en';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>

谢谢。

【问题讨论】:

    标签: phpmyadmin php


    【解决方案1】:

    这些会话文件不会永远保留在那里。 PHP 做会话垃圾回收,见http://php.net/manual/en/sessionhandler.gc.php

    【讨论】:

    • 谢谢,马克。不知道 PHP 中的 SessionHandler 类及其行为。无论如何,我认为 PMA 应该在注销时调用 session_destroy(),因为如果用户从他或她的浏览器中删除 cookie,它将不再需要会话文件。我认为依赖 PHP 配置(session.gc_divisor、session.gc_probability 和 session.gc_maxlifetime)不是一个好主意,因为它可能会过多地填充会话存储......
    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 2016-06-17
    • 2016-08-25
    • 1970-01-01
    • 2012-07-23
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多